🔗 快捷导航(DPE 全家桶一键直达)
🌐 DPE 官网 ✏️ DPE 编辑器 ▶️ 课件播放器 🧪 API 示例中心 📖 API 手册 📘 操作手册 📋 功能清单(发客户/ISV) ⬇️ 三平台客户端下载 🏭 CIMPro孪大师官网
DPE 数字样机编辑器用户操作手册 · Web3D版 V7.9.66

DPE 数字样机编辑器(Web3D版 V7.9.66)
用户操作手册

适用读者:制造企业培训部门课件作者(无需编程基础)| 文档版本:V7.9.66 | 更新日期:2026-08-31

🎬 完整制作视频教程(真实模型实操 · 约 2 分半 · 带语音解说)

使用「码垛机器人」glTF 模型(含骨骼动画)完整演示一个课件的制作流程,每一步带语音解说与字幕:

  1. 启动编辑器:界面分区总览(大纲/材质/灯光/历史 · 逻辑面板 · 流程图/序列)
  2. 导入 glTF 模型:层级、命名、骨骼动画完整保留
  3. 大纲视图:层级展开收起、点选、Ctrl/Shift 多选、Ctrl+A 全选
  4. 批量生成拆卸步骤:方向/距离/工具/提示一次成型
  5. 材质工作站:80+ 种 PBR 预设一键赋予
  6. 材质吸管:吸取模型自带材质,参数与贴图进入面板再编辑
  7. 灯光工作站:添加聚光灯,物理阴影 + SSAO 真实感渲染
  8. 爆炸图认知模式:全构件炸开并标注名称
  9. 序列编辑器:骨骼动画剪辑入轨,关键帧拖动编辑
  10. 一键发布:导出 .vtpack 项目文件,学员端浏览器直接播放

1. 🚀 快速上手:5 分钟做出第一个课件

1.1 快速上手路线图(新用户 5 分钟)

五步走完一条最短路径,先跑通全流程再研究细节:

步骤去哪里操作做什么
① 导入顶部工具栏「⬇ 导入模型」.gltf / .glb 文件(STEP/STP 工业模型也可直接选),模型先进入底部「🗂 资源」库
② 置入底栏「🗂 资源」页签双击资源条目(或点「置入」/直接拖入三维视口),模型放入场景并出现在左侧「🌲 大纲」
③ 做步骤右侧「步骤」面板选中构件 → 「🎬 步骤制作模式」拖出即成步,或「⚡ 批量生成步骤」一次成型
④ 发布顶部「🚀 发布课件」默认形态导出 .vtpack 项目文件(模型+逻辑+材质+步骤一体化)
⑤ 播放player.html 播放器打开播放器 →「📦 打开项目文件」选择 .vtpack,自动进入课件播放模式,分发给学员

1.2 五分钟实操演示

本节带您从零完成一个「拆卸演示课件」。假设您已拿到建模团队交付的 glTF 模型文件。

  1. 导入模型:打开编辑器(index.html),点击顶部工具栏的「⬇ 导入模型」,选择 .gltf / .glb 文件。模型先进入底部「🗂 资源」面板的资源库,双击资源(或点「置入场景」)即放入视口,左侧「🌲 大纲」面板出现完整层级树。
  2. 框选构件:在视口中按住鼠标左键拖出一个选框,框住要拆装的构件(例如 4 颗螺栓);或在大纲面板中按住 Ctrl 逐个点击多选。被选中的构件会高亮显示。
  3. 批量生成步骤:在右侧「步骤」面板点击「⚡ 批量生成步骤」,编辑器会为每个选中构件自动生成一个拆卸步骤(含位移动画方向建议),并出现在步骤列表中。
  4. 演示预览:点击底部「⚡ 流程图」上的 ▶ 播放按钮,从头到尾预览整个拆装流程,检查顺序和方向是否合理;不合适的步骤可直接拖拽调整次序。
  5. 发布:点击顶部工具栏「🚀 发布课件」,默认导出 .vtpack 项目文件(模型、课件逻辑、材质、步骤一体化)。用播放器(player.html)打开该文件,即可分享给学员观看。
💡 小贴士:第一次操作建议先用一个 10~50 个构件的小总成练手,熟悉流程后再做整机课件。

2. 🖥 界面总览

编辑器界面分为五个区域,如下图所示(文字示意):

区域位置功能
顶部工具栏界面最上方📄 新建、📂 打开、⬇ 导入模型(统一导入入口)、💾 保存、📑 另存为、🧹 清空,模式切换(🛠 编辑 / ▶ 演示 / 🎓 培训 / 📝 考核),🚀 发布课件、📖 手册、👁 预览、🔗 预览链接等全局操作。
左侧面板左侧标签页🌲 大纲、+ 创建、🌌 场景(灯光/环境/背景)、🕘 历史、📜 脚本、📡 数据 六个标签页。
右侧面板右侧标签页属性(选中对象的参数)、⚡ 交互(事件→条件→动作的零代码交互规则,v7.7 新增)、步骤引导相机界面工具考核 八个标签页。
视口工具栏视口上方左侧组:变换(✥ 移动 W / ⟳ 旋转 E / ⤢ 缩放 R / 🌐 世界·局部坐标 Q / 🧲 吸附)、选择(🖐 自由拖拽 / 🔲 框选)、视图(🎯 聚焦 F / 🎥 视角复位 / 💡 辅助物体显隐 / 渲染模式下拉:真实渲染·无光照·MatCap·法线·线框);右侧组:分析(💥 爆炸图 / ✂ 剖切 / 📏 测量)。
底部面板界面下方流程图(步骤流程可视化)、🎬 序列(专业级动画序列编辑器),以及 🗂 资源、🎨 材质、📚 模型库 三个工作站页签(在左侧展开);面板高度可上下拖拽调整
视口中央最大区域3D 场景实时预览与交互操作区。
💡 自由布局:左右面板可贯通到底(延伸到软件底部),大纲/属性面板可单独收起(页签栏 ⤓/⟨/⟩ 按钮,收起后屏幕边缘出现恢复条);所有面板的边缘都可拖拽调整宽高——脚本/数据绑定/步骤制作等长内容可全屏查看,适配不同屏幕尺寸。
📌 各面板的详细用法见后续对应章节:大纲(第 4 章)、标签(第 5 章)、资源(第 6 章)、视口与剖切/测量(第 7 章)、属性(第 8 章)、材质(第 9 章)、灯光(第 10 章)、天空与天气(第 11 章)、渲染与性能(第 12 章)、步骤与流程(第 13 章)、逻辑面板(第 14 章)、历史(第 15 章)、序列(第 16 章)、保存与发布(第 17-18 章)、脚本与数据(第 20 章)、交互系统(第 21 章)。

3. 📦 模型导入规范(给建模团队的交付要求)

课件质量很大程度取决于模型质量。请将本页要求直接转达给建模团队。

3.1 交付格式

  • 首选 glTF / GLB(.gltf / .glb),Web 端加载快、材质与动画保留完整。
  • 工业模型支持 STEP / STP:主流工业软件导出的装配体可在「⬇ 导入模型」中直接选择(beta),浏览器端自动三角化转为 GLB 入资源库(精度/单位/合并模式可设,见 6.1 节)。
  • 另支持 FBX / OBJ(可配 MTL 与贴图多选)/ STL / PLY,以及 PNG / JPG / WebP 贴图。
  • 支持层级完整保留:建模软件中的组/父子关系会原样进入大纲树。
  • 支持骨骼动画变形动画(Morph Target),导入后可在「🎬 序列」编辑器中加载为动画轨道(见第 16 章)。

3.2 建模与命名要求

要求说明反面示例
🔩 按可拆装构件拆分每一颗螺栓、垫片、盖板都应是独立对象,不要合并成一体。课件按构件生成拆装步骤。整个法兰焊成一个网格,无法单独拆螺栓。
🏷 命名即课件显示名对象名称会直接显示在课件步骤和大纲中,请用规范中文名,如「M8内六角螺栓-01」。「Box023」「Cylinder_18_copy」。
🎯 轴心居中每个构件的轴心(Pivot)应位于自身几何中心,保证旋转、拆装动画方向正确。轴心在世界原点,选中构件后手柄飘在远处。
🗂 层级按总成组织按「总成 → 子总成 → 零件」建组,例如「发动机/缸盖总成/气门弹簧」。层级会保留进大纲树,方便批量选择。200 个零件平铺在同一层。
📐 三角面控制整机建议 ≤ 100 万三角面(详见 FAQ)。单个倒角就几十万面的超重模型。
⚠️ 注意:若导入后发现命名混乱或构件未拆分,请在建模软件端修改后重新导出,不要在大纲里逐个改名补救(重新导入会覆盖)。

4. 🌳 大纲视图

大纲以层级树展示模型全部构件,是选择和组织构件的主要工具。

4.1 基本操作

操作方法
展开 / 折叠层级点击节点左侧 ▶ / ▼ 箭头。
选中构件单击名称,视口中同步高亮。
复选多选每个节点前有复选框 ☑,勾选即选中,可跨层级多选。
Ctrl 多选按住 Ctrl 逐个点击,加选/取消单个构件。
Shift 连选先点第一个,按住 Shift 点最后一个,选中两者之间连续项。
全选Ctrl+A
打组多选后按 Ctrl+G,生成一个新组节点(如「紧固件组」)。
组头整体选中打组后点击组头行即选中整组,可整组移动 / 旋转 / 缩放。
解散组选中组后按 Delete(或点「解组」按钮),组节点移除、组内构件回到上一层级,构件本身不会被删除
拖拽改变父子关系直接拖动某一行到另一构件行上,该行即成为目标构件的子级;拖到空白处回到顶层。配合层级树可快速整理「总成 → 零件」结构。
重命名双击名称进入编辑态,回车确认。
显隐点击节点右侧 👁 图标切换显示/隐藏(隐藏不影响课件数据)。
删除选中后按 Delete(选中组时为解散组),可从历史记录撤销恢复。
搜索面板顶部搜索框输入关键字,实时过滤匹配构件,Ctrl+F 快速聚焦搜索框。

4.2 对象分组管理(标签 / 灯光 / 相机)

v6.5 起,大纲中的标签、灯光、相机三类对象各有独立的父级根节点组(如「🏷 标签」「💡 灯光」「📷 相机」),创建的同类对象自动归入对应组下,层级清晰、便于统一管理。

操作方法
折叠/展开组点击组头左侧 ▶ / ▼ 箭头。
选中组单击组头行(组名高亮)。
重命名组双击组名,或点组头右侧 ✎ 图标。
组内再分组(打组)勾选同一类下的多个对象 → Ctrl+G,生成可折叠/解散的子组。
删除对象每个对象行右侧有 ✕ 删除按钮。
双击聚焦大纲中任意元素(模型/标签/灯光/相机)双击 = F 键聚焦,相机自动飞到该对象。
视口选中联动在三维视口点选某物体,大纲会自动展开其所在组并平滑滚动聚焦到该项。

4.3 大纲顶部工具条

大纲树上方有一排小按钮:📦 打组(勾选构件打成一组)、🗂 解组、👁 全部显示(一键找回被隐藏构件)、🙈 全部隐藏、☑ 全选(Ctrl+A)、🗑 删除勾选构件、📤 导出部件清单 Excel(可编辑后重新导入生成拆装步骤,见 13.4 节)。

💡 大纲中的选择与视口选择双向同步:在大纲里勾选的构件,在视口框选时同样处于选中态,两种方式可混用。多选(Shift范围选/Ctrl多选/复选框)后按 Esc 可一键取消多选。

5. 🏷 标签系统(吸附标注 · v6.5 新增)

标签是吸附在三维构件上的名称标注,带一条引导线连接标签与构件,构件移动/炸开时标签自动跟随。常用于给关键零件标注名称、编号、检修要点。

创建标签

方式说明
单击构件 = 单独建标签创建面板点「🏷 标签」进入标签模式,单击某个构件即为它单独创建一个标签(文字自动继承构件名)。
Shift+单击 = 多模型共用按住 Shift 连续点击多个构件,这些模型的引导线汇聚到同一个标签上(一个标签标注多个零件)。
点空白处 = 自由标签标签模式下点击没有模型的空白处,创建一个自由标签(无绑定、无连线),可在属性面板手动填文字、稍后再绑定模型。
退出标签模式Esc 或再点一次「🏷 标签」按钮(视口顶部有持续提示条)。

标签属性编辑

点击场景中的标签(或大纲里点标签名)选中后,右侧属性面板可改:文字内容(多行)、文字颜色、字号、背景颜色/不透明度、边框颜色、整体透明度,以及引导线的开关、样式(直线/曲线)、颜色、粗细。

绑定管理

  • 绑定模型列表:属性面板列出该标签绑定的所有模型(📌主锚点 / 🔗附加),每行可 ✕ 单独移除。
  • ➕ 增加绑定:点此按钮后去三维场景点击要加入的构件(可连点多个,Esc 完成)。
  • 🗑 清空绑定:一键移除所有绑定,标签变自由标签。
  • 🔗 换绑目标 / ✂ 解绑:换绑=把锚点移到另一个构件;解绑=标签脱离构件不再跟随。

其他要点

  • 标签位置可用变换手柄直接拖动,移动可用 Ctrl+Z 撤销;创建标签也可撤销。
  • 删除某个构件时,绑定它的标签连线会一并删除(主锚点被删则自动改用附加锚点,或转自由标签)。
  • 标签可在大纲打组(多选后 Ctrl+G)、批量勾选后统一改颜色/字号/连线等参数。
  • 标签随工程包(.vtpack)保存与恢复。

6. 📦 资源管理面板

导入的模型先进入资源库,不直接进场景。资源库就像您的"零件货架":先备货,再按需取用,同一个资源可重复置入多个实例。资源面板在底部页签「🗂 资源」中打开(左侧展开),每个资源卡片带实景缩略图(模型入库时自动生成 128×128 截图,旧资产打开面板自动补生成)与文件大小/构件数信息。

6.1 导入与置入(「⬇ 导入模型」统一入口)

v7.2 起「⬇ 导入模型」是唯一导入入口:点击后先弹出格式清单弹窗(三维模型 / 工业模型 / 贴图 / 工程文件四分组卡片,支持把文件直接拖拽到弹窗导入),再选择文件。

  1. 导入:顶部工具栏「⬇ 导入模型」→ 选择 .gltf / .glb 等模型文件(可连同 .mtl 与贴图一起多选),模型出现在「🗂 资源」面板的资源列表中。
  2. STEP / STP 工业模型:文件选择器中直接选 STEP 文件(带 beta 徽标),系统先弹参数确认面板——精度(高/中/低/自定义)、源文件单位(mm/cm/m/inch)、构件合并模式、构件数上限——确认后才开始转换,取消可放弃;转换完成自动入资源库。
  3. 置入场景双击资源条目、点「置入」按钮,或直接把资源拖入三维视口,模型即放入场景并出现在大纲树中。
  4. 重复取用:同一资源可多次置入(如多颗相同的螺栓),每次置入都是独立构件,可分别编排步骤。

6.2 资源库整理

操作方法
新建 / 删除文件夹面板内「+ 文件夹」新建;选中文件夹后点删除(仅整理资源库,不影响已置入场景的构件)。
移动资源点资源条目 ⇄ 按钮移动到文件夹,按项目/总成归类。
重命名点资源条目 ✏ 图标进入编辑态。
删除资源选中后点 ✕;已置入场景的实例不受影响。
💡 建议按「项目 → 总成」建文件夹管理资源,做大课件时找模型会快很多。vtpack / vtproj 工程文件不走导入,请用顶部「📂 打开」。

7. 🎮 视口操作

7.1 轨道相机

操作鼠标 / 键盘
旋转视角按住左键拖动(空白处)
平移视角按住右键拖动(或中键拖动)
缩放滚轮
聚焦选中构件F —— 相机自动飞到选中物并充满视野
视角复位视口工具栏「🎥」按钮,一键回到默认视角
📌 编辑器当前以轨道相机为默认交互;第一人称 / 第三人称 / 鸟瞰等导航模式保留在 DPE API 中(setNavMode),供 iframe 集成方按需切换。

7.1A 🎥 相机漫游模式(顶部工具栏「相机」下拉)

模式操作适用场景
环绕(默认)左键旋转 · 右键平移 · 滚轮缩放常规观察 / 装配查看
第一人称WASD/方向键移动 · 鼠标视角 · Shift 加速(倍率可调)· 默认开启碰撞检测(穿墙防护可关)厂房巡检 / 培训漫游
飞行WASD 任意方向 · Q/E 升降 · 鼠标拖拽转向大场景自由飞行(无碰撞)

7.1B 🎥 默认相机(场景主相机)

切换漫游模式时(或进入编辑器后),大纲视图顶部会出现一个置顶显示的「🎥 默认相机」节点(带「默认」徽标)——它就是当前场景的主相机:

  • 置顶 + 不可删除:永远排在大纲第一行,无删除/重命名/冻结按钮,批量删除与全选均自动排除——主相机常驻,防止误删导致视角丢失;
  • 视口不可见·不可聚焦自身:默认相机是观察者本身(逻辑管理节点而非场景实体)——三维视口中看不到任何代理形状,不参与鼠标拾取与框选;按 F 聚焦会提示「默认相机是观察者本身,不可聚焦自身」,视角不会突跳;
  • 点击选中后,右侧属性面板显示完整相机属性
    分组可调参数
    📷 相机属性视角 FOV(20°–120°,实时显示 35mm 等效焦距)· 位置 X/Y/Z · 朝向(水平角/俯仰角)· 近裁剪面 / 远裁剪面
    🚶 漫游参数移动速度 · 鼠标灵敏度 · Shift 加速倍率(1–8×)· 曝光 · 色温(2000K–10000K 白平衡实时预览)· 碰撞检测开关(第一人称)
  • 节点名称随模式自动同步(如「默认相机 [第一人称·碰撞]」);
  • API 同步开放:camera.setNavParam(位姿/裁剪面/色温/加速倍率全参数)与 camera.getPose(查询位姿/FOV/等效焦距),AI 与 iframe 宿主可完全接管相机;
  • ↩ 重置(全部 + 逐参数):面板右上「重置参数」按钮(或 API camera.resetNav)一键全部恢复——相机属性(FOV/裁剪面)恢复启动初始值、视角平滑飞回初始机位,漫游参数恢复出厂;每个参数行尾另有独立 ↩ 小按钮(或 API camera.resetParam {key})单项重置——只恢复该参数,其它参数不动(如只调坏了 FOV 就只重置 FOV)。

7.2 变换手柄与选择

功能说明
W 移动 / E 旋转 / R 缩放切换变换手柄模式,拖动手柄的轴/环/方块调整构件。
Q 世界 / 局部坐标切换手柄朝向:世界坐标轴对齐场景,局部坐标轴随构件自身方向。
🧲 吸附工具栏开启后,移动按固定步长、旋转按固定角度吸附,便于精确对齐。
🖐 自由拖拽直接点住构件本体拖动,沿当前视平面移动(适合粗调)。
🔲 框选左键拖出矩形选框,框内构件全部选中;Shift/Cmd+拖框为加选多选(v7.3),配合大纲勾选互通,Esc 清空多选。
悬停信息鼠标悬停在构件上,浮出气泡显示名称、所属总成、三角面数等。
Ctrl+C / Ctrl+V复制选中构件(多选可复制多个)→ 粘贴生成实例副本;属性面板另有「📄 复制 / 📚 批量复制」按钮。

7.3 视口多选与批量赋材质(v7.3)

在视口按 Shift(Mac 为 Cmd)+ 拖框可多选构件,多选集合与大纲勾选互通。多选后:

  • 在底部「🎨 材质」工作站点材质球或调通道参数,批量应用到全部勾选构件(如把 20 颗螺栓一次全设为不锈钢);
  • 点任意单个构件进入单选,但保留多选集合可继续批量调参;Esc 清空多选。

7.4 轴心点设置

遇到构件轴心不在正确位置(手柄偏移、旋转绕错点)时,选中构件在右侧「属性」面板找到「轴心点」

  1. 在下拉中选择目标位置:包围盒中心 / 底面中心 / 顶面中心 / X·Y·Z 最小·最大边线 / 最低顶点 / 最高顶点(共 11 种);
  2. 点「设置轴心」生效——勾选多个构件时批量生效;嵌套在多层组内或父级带旋转/缩放的物体设置轴心也不会飞走(v7.4 矩阵补偿,子级世界变换严格不变);
  3. 位置/旋转/缩放每行输入框旁有 ⟲ 重置按钮,可单独恢复初始值。
💡 根治办法是请建模团队在导出前归置轴心(见第 3 章规范)。

7.5 认知辅助模式

💥 爆炸图认知模式

视口右缘「💥」一键智能炸开:自动识别机器主轴,芯部件链式排开零重叠,包络外壳轮辐式侧拉与步骤制作器联动:有拆装步骤时爆炸=步骤终态投影(爆炸方式下拉自动锁定并提示),间距系数/规整排列(BOM 按步骤顺序排开)/名称标签开关继续可调;名称标签走标注系统(专业引导线+绑定跟随),颜色/背景/描边/采样精度/抗锯齿与「🌌 场景」页签「标签样式」面板实时同步。三段式记忆(v7.4):开爆炸→调整相机与标签位置→关爆炸(自动快照记忆)→再开爆炸完整恢复调整后的视角与标签位置,可「↺ 清除标签手动调整」恢复自动布局。演示/培训/考核模式下不可使用爆炸图(避免干扰评分)。

7.6 ✂ 剖切工具(精确断面封面)

视口工具栏「✂」打开剖切面板,选择平面剖切体剖切(盒)后,场景中出现剖切可视化 + 橙色手柄并自动激活变换控制:

操作说明
W 拖动手柄移动平面:沿法线推移剖切位置;体:整体平移剖切盒。拖动时约 120ms 节流实时重算断面。
E 旋转任意角度旋转剖切面/剖切盒(斜剖)。
R 缩放体剖切:三轴独立拉伸剖切盒尺寸(非均匀)。
面板精调剖切轴/位置/反向、盒中心/尺寸、范围限定(全部构件/仅勾选构件/排除勾选构件)。
断面材质v7.2 起断面为数学级严丝合缝的实体封面(manifold 布尔引擎后台计算,任意角度无破洞无闪烁)。「断面材质」插槽可选:自动(继承被剖物体)/金属灰/钢蓝/橙色警示/半透明蓝/自定义颜色,一键统一所有断面并支持热切换(不重算几何)。
💡 剖切可视化采用穿透渲染(不参与深度比较),盒面不再闪烁;非水密网格自动逐件降级,超 30 万面整体降级旧方案兜底;关闭剖切零残留。剖切模式锁定期间只能操作剖切手柄,不会误选其他物体。

7.7 📏 测量工具

视口工具栏「📏」打开测量面板,支持四类测量:

  • 距离:两点间距离;高度:垂直高度差;角度:三点夹角;面积:多边形面积。
  • 智能吸附(悬停显示吸附点):顶点 / 边中点 / 面中心,可分别开关。
  • 「↩ 撤销上一点」退一个点,「🗑 清除全部」清空测量线。测量在编辑模式下可用。

7.8 渲染模式切换

视口工具栏的渲染模式下拉可切换模型显示方式:🎨 真实渲染(PBR 默认)/ ☀ 无光照 / 🔮 MatCap / 🌈 法线 / 🕸 线框——检查模型布线、法线朝向或做风格化展示时常用。另有 💡 辅助物体显隐开关:一键隐藏灯光/相机等非实体辅助物(仅影响视口显示,不影响功能;预览/播放模式自动隐藏)。

8. 🧭 属性面板(Inspector)

右侧第一个「属性」页签:选中任何对象,此处显示并可编辑它的全部关键属性。

  • 构件:名称、位置 / 旋转 / 缩放(9 项数值)、轴心点下拉与「设置轴心」(见 7.4 节)、🎯 聚焦、📄 复制、📚 批量复制、🗑 删除。
  • 数值拖动:位置/旋转/缩放带 X Y Z 彩色标签,按住标签左右拖动即可调值(专业三维软件拖拽调值交互);每行 ⟲ 按钮重置初始值。
  • 材质实时同步(v7.3):材质工作站赋的材质/参数立即显示到属性面板(免材质吸管);API/脚本改材质也会自动落盘(保存工程不丢)。
  • 灯光:名称、位置、颜色、强度、投射阴影、阴影质量/偏移、色温(2000K–10000K)、「🎚 手柄移动」直接拖三轴手柄调灯位。
  • 相机:FOV 视场角与焦距(35mm 等效)联动、对焦距离、光圈 f 值、曝光补偿、景深 DOF、「从此相机预览」。

9. 🎨 材质系统

9.1 PBR 通道详解

编辑器采用 PBR(基于物理的渲染)材质。选中构件后,在底部「🎨 材质」工作站可调整以下通道,每个通道都带贴图插槽,可导入外部图片替换贴图:

通道作用通俗理解
基础色 Base Color物体本身的颜色 / 表面纹理贴图「这块金属是银灰还是喷了红漆」
金属度 Metallic0=非金属,1=纯金属决定反光是否带金属那种"镜面感"
粗糙度 Roughness0=镜面光滑,1=完全磨砂越高越像哑光塑料,越低越像抛光件
法线 Normal用贴图伪造凹凸细节让平面显出滚花、划痕的立体感
AO 环境光遮蔽缝隙、凹陷处加暗让角落有自然阴影,增强立体层次
发光 Emissive让表面自发光仪表盘指示灯、屏幕等效果

9.2 预设材质库(82 种 · 10 大分类)

材质工作站在底部页签「🎨 材质」(左侧展开),三栏结构:分类导航 + 材质球 + 通道编辑器。

分类数量典型用途
🪙 金属9钢、铝、铜、铸铁、不锈钢、镀铬等机体件
🥃 玻璃9观察窗、灯罩、油位视镜
🧴 塑料9手柄、护罩、按钮
🪵 木头9包装箱、木托盘、家具
🧱 混凝土9厂房地面、基座等场景元素
💧 水体9水池、河道、液面
🛣 地面9车间地坪、道路、草地
💡 发光材质9指示灯、高亮提示、屏幕
🕸 线框9结构示意、教学强调(v6.5 新增)
⬜ 标准材质1通用中性材质,调参起点

双击预设即可赋予当前选中的构件。

9.3 常用操作

  • 💉 材质吸管:点击吸管工具,再点视口中任意构件,即可吸取导入模型自带的材质参数,应用到当前选中构件。
  • 批量赋予:在大纲或视口多选构件后双击预设,一次全部应用(如把所有螺栓统一设为不锈钢);材质预设与通道参数均支持批量(见 7.3 节)。
  • 恢复原始材质:点击「↩ 恢复原始材质」,回到模型导入时自带的材质状态。
⚠️ 重要:通过贴图插槽导入的外部贴图仅在当前会话生效。保存工程并重新打开后,需要重新指定贴图文件。建议把要用的贴图在每次开工时统一重新指定一次,或优先使用预设库与纯色参数。

10. 💡 灯光系统

10.1 三种光源

类型特点典型用途
☀️ 平行光光线平行、无衰减,类似太阳主光源,产生清晰阴影,定整体明暗基调
💡 点光源从一点向四周发光,随距离衰减补充局部照明,如设备内部、仪表盘
🔦 聚光灯锥形光束,可调锥角强调重点区域,如讲台照射、工位补光
  • 创建:左侧「🌌 场景」页签(或「+ 创建」页签)点击「+平行光 / +点光源 / +聚光灯」。
  • 调整:选中灯后可直接用变换手柄拖动灯位(面板「🎚 手柄移动」;平行光调方向、聚光灯调朝向),并在面板或属性面板中设置名称、颜色、强度、阴影等参数。
  • 删除:选中灯光后点击「🗑 删除灯光」或按 Delete;大纲「💡 灯光」组中也可行内 ✕ 删除、✎ 重命名、👁 显隐。

10.2 阴影与环境

设置项说明
阴影质量低 (512) / 中 (1024) / 高 (2048) / 极高 (4096) 四档,越高阴影边缘越细腻;性能不足时先降此项。
全局曝光「🌌 场景」页签「☀ 曝光」滑杆,整体画面亮度,模型偏暗时优先调它,比盲目加灯更自然;天空模式自动按天气档补偿基础曝光。
环境反射为金属/玻璃提供反射内容(强度 0~2 可调),决定"亮不亮得起来";金属材质务必保证开启。
SSAO 环境光遮蔽让缝隙、接触处出现柔和暗部,大幅增强立体感,建议开启。
启用阴影(总开关)全局阴影总开关,切换强制重烘。

10.3 真实感渲染建议组合

推荐配方:1 盏平行光(主光,开阴影,强度 2~3)+ 环境反射(室内 HDRI)+ 开启 SSAO + 全局曝光 1.0~1.2。若局部太暗,再加 1~2 盏点光源补光,避免超过 4 盏灯以免影响性能。

11. ☀ 天空组件与天气系统

左侧「🌌 场景」页签中「天空与天气(全局光照)」区。

  • 天空组件:开启后为物理大气天空,全局光照(GI)由天空实时烘焙,金属/PBR 材质质感立刻提升。
  • 时刻与方位:拖动「时刻」与「太阳方位」滑条即可改变日照角度。
  • 天气系统:晴天 / 多云 / 阴天 / 雨天 / 雪天——联动大气雾(指数雾)、体积云层、光照强度;雨天/雪天自动生成对应天气粒子效果。
💡 大场景建议组合:天空开 + 多云/阴天 + SSAO 开 + 阴影高。

12. 🎛 渲染与性能设置(自适应画质 Governor)

「🌌 场景」页签中提供画质档位三档与自适应画质 Governor:

档位内容适用
极致N8AO 全分辨率 + Bloom + SMAA 高档高配机器 / 截图出图
均衡(默认)N8AO 半分辨率 + SMAA大多数机器
流畅关 AO 仅 SMAA低配机器 / 大模型
  • 自适应画质 Governor(v7.4 起):帧率持续偏低时自动降档(流畅模式),恢复后自动升档回原档位;v7.5 升级为「档位 × 分辨率」阶梯——降档后仍低帧则继续降低渲染分辨率、必要时紧急关闭 SMAA 自救,升档防振荡。
  • 手动选画质 = 关闭自动:点了「极致 / 均衡 / 流畅」任意按钮后 Governor 自动退出,恢复满分辨率,档位完全由您掌控。
  • 视口左下角实时显示帧率与构件/三角面统计;统计口径与资源库一致(叶子构件口径)。
💡 卡顿排查顺序:① 等待 Governor 自动降档(通常几秒内生效)→ ② 手动切「流畅」→ ③ 阴影质量降「中」→ ④ 灯光总数 ≤ 4 盏 → ⑤ 定期清空历史记录释放内存。

13. 📋 步骤与流程

13.1 添加步骤

🎬 步骤制作模式:步骤面板点「🎬 步骤制作模式」→ 点选构件 → 拖三重轴臂杆 → 松手自动成步,构件自动回装配位继续下一件。拖动实时显示方向+距离;Alt+点击面=按面法线定向(斜向拆装);Shift=自由方向;Esc 退出。重拖已有步骤的构件=更新方向距离(不重复建步)。开「附加到上一步」= 与上一步同组并行动作。

🔗 链式均分间距:同方向连续步骤一键按"前件半尺寸+本件半尺寸+基础间距"重排距离,自动防重叠。

步骤卡片:可拖拽排序、▶单步回放、⧉复制参数给选中构件、↑↓微调、✕删除;面板提供「↺ 重置(清空+归位)」「🗑 清空步骤」;有步骤后爆炸图自动=步骤终态投影(改步骤即改爆炸,数据同源)。

步骤细节手风琴(v7.3):点击步骤卡片,其细节编辑面板紧随卡片下方手风琴展开(展开动画+自动滚动到可视区),不再翻到列表底部找;再点已展开卡片即收起。

  1. 选中构件(大纲勾选或视口框选);
  2. 在右侧「步骤」面板点击「+ 添加拆卸步骤(当前选中构件)」,为该构件生成一个拆装步骤(记录位移方向、距离、时长);
  3. 或使用「⚡ 批量生成步骤」,为多选构件一次性生成全部步骤。

13.2 并行组号

每个步骤有一个并行组号组号相同的步骤不分先后、同时执行。典型场景:松开一个法兰上的 6 颗螺栓——它们没有严格先后关系,全部设为同一组号,播放时同步旋出,更接近真实操作。

13.3 智能排序与流程图联动

功能说明
🔍 遮挡检测与自动排序点击「自动排序」,编辑器分析构件间遮挡关系,把"挡住别人"的外层构件排在前面先拆,避免拆内部件时外壳还在的穿帮。
↔ 安装流程自动逆序做完拆卸流程后,一键生成安装流程:拆卸步骤整体倒序、动画方向自动取反,无需重做一遍。拆卸/装配流程完全独立,随工程保存。
⚙ 批量设置多选步骤后统一修改动画时长、并行组号、提示文本,适合整体节奏微调。
卡片↔流程图双向联动步骤卡片,底部流程图对应节点蓝色发光高亮+画布自动居中;点流程节点,步骤列表自动滚动到对应卡片并选中。
📌 步骤顺序同时反映到底部「⚡ 流程图」中:可拖拽节点调整顺序,流程图与步骤列表双向同步;「自动布局」按钮一键整理流程图版面。

13.4 Excel 双向闭环

  • 📤 导出:大纲工具条「📤」导出部件清单 Excel(名称/ID/层级路径/拆卸顺序/工具/材质/提示,已配置步骤自动回填);无步骤时可导出清单模板盲填。
  • 📥 导入:步骤面板「📥 导入拆装列表 (Excel)」支持 xlsx/csv,按 ID→名称→模糊三级匹配;中文方向(上下左右前后)与动作(拆卸/装配/检查/润滑)直接可填,全字段无损往返(含机位)。
  • 导入后显示汇总(新建/更新/跳过/失败),大批量构件零手动点选。

14. 🧩 五个逻辑面板怎么配

右侧逻辑面板的五个标签页,分别控制课件播放时的五类行为。全部配置会随工程保存、随课件包发布。

14.1 🧭 引导

  • 为每一步骤配置引导文字(播放时显示的操作说明,如"先松开 4 颗 M8 螺栓")。
  • 可添加高亮箭头 / 圈选指向当前操作构件,引导学员视线。
  • 支持设置"必须看完引导才可下一步"等播放约束。

14.2 🎥 相机

  • 为关键步骤记录相机机位:在视口摆好视角后点击「记录当前视角」,播放到该步骤时镜头自动飞过去。
  • 可设飞行时长与缓动;未记录的步骤沿用上一机位。
  • 建议:总览 → 局部特写 → 操作细节,形成"远景-近景"叙事节奏。

14.3 🖼 界面

  • 配置播放器端界面元素:课件标题、LOGO、步骤栏样式、是否显示进度条与目录。
  • 可上传封面图与背景色,形成企业统一的课件风格。

14.4 🔧 工具

  • 为步骤关联工具:如"扭矩扳手""一字螺丝刀",播放时在工具区同步展示。
  • 维护本项目常用工具清单(名称 + 图标),供各步骤下拉选用。

14.5 📝 考核

  • 把指定步骤标记为考核点:学员需在播放器中点选正确构件才算通过。
  • 可设置每题分值、是否允许多次尝试、答错提示语。
  • 考核结果在播放结束时汇总显示得分(判错逻辑见 FAQ 第 5 条)。

15. 🕘 历史记录

  • 所有操作可回溯:移动构件、改材质、删节点、改步骤……每一次编辑都会记录在左侧「历史」面板中。
  • 点击回到任意一步:历史列表按时间倒序排列,点击任意记录,场景直接回滚到该时刻状态,其后操作保留在列表中(再做新操作才会截断)。
  • 快捷键Ctrl+Z 撤销,Ctrl+Y 重做。
  • 清空:面板底部「清空历史」释放内存;清空后不可恢复,工程量大时建议定期清空以保持流畅。

16. 🎬 序列编辑器(专业级动画系统)

底栏「🎬 序列」页签是 v7.1 起的动画制作中心(取代旧版「动画时间轴」,旧称「动画编辑器」已并入本系统)。心智模型对齐专业级序列编辑器:序列(Sequence)→ 物体绑定(Binding)→ 属性行(Track)→ 关键帧(Key),支持多序列、全属性 K 帧、模型自带动画轨道、片段裁剪与倒放。

16.1 界面布局

┌ 工具条:▶/⏸ ⏹ ⏮ ⏭ ⏪(倒放)| 时间 时长 帧率|循环(➊不循环/🔁循环/⇄往返)|速率 优先级 吸附|渲染视频 ┐
├ ② 序列列表(180px,可拖宽)┬ ③ 轨道树(250px,可拖宽)┬ ④ 时间线(刻度+播放头+关键帧方块+动画片段块) ┤
  • 序列列表:搜索过滤;每行 = 启用开关 / 名称 / 时长 / ✏ 重命名 / ⧉ 复制 / ✕ 删除;单击切换当前编辑序列。
  • 轨道树(三级折叠,默认收起):物体行 → L1 组(🧭 变换 / 🎨 材质 / 💡 灯光 / 📷 相机 / 🏷 标签 / 👁 杂项)→ L2 子组 → L3 叶子属性行(当前值输入框 + ◆ 打帧按钮 + 🗑 删轨道);展开状态有记忆。
  • 时间线:拖顶部刻度条 = 播放头 scrub 实时预览;红色竖线 = 时长右边界;空格 播放/暂停。

16.2 加入物体与全属性 K 帧

  1. 新建序列:序列列表「+」新建(可命名、设时长与帧率);
  2. 加入物体:从左侧大纲把构件 / 相机行直接拖到序列行或轨道树(支持勾选多选后整组拖入);
  3. 打关键帧:展开属性树,把播放头拖到目标时间,在属性行输入框改值 = 自动在该时刻打帧(有轨道时"沿轨道调整即 K 帧");也可点 ◆ 按当前值打帧;
  4. 插值:auto(Catmull-Rom 平滑)/ linear / constant(阶梯)/ easeIn / easeOut / ease 六种;
  5. 可 K 帧属性白名单:构件(变换各轴/可见性/材质颜色·金属度·粗糙度·发光·透明度)、灯光(强度/颜色/显隐)、相机(FOV/对焦/光圈/曝光)、标签(文字/显隐/颜色)。
💡 典型流程:新建序列 → 拖入「顶盖」→ 展开材质组 → 播放头拖到 0s,金属度输入 1 → 拖到 2s 输入 0 → ▶ 播放,金属渐变木头。

16.3 关键帧编辑

  • 选择:单击单选、Ctrl+点击加选、空白拖动框选(跨属性行)、Esc 取消;
  • 移动:拖动关键帧改时间(吸附帧网格);拖动任一选中帧整体移动(显示 Δt 提示);Alt+拖动复制
  • 右键菜单:设值 / 设时间 / 六种插值 / 复制到播放头 / 删除所选;Delete 删全部选中;
  • 时间缩放Ctrl+滚轮(以指针为锚);父行显示子关键帧汇总刻线。

16.4 模型自带动画轨道(骨骼/剪辑动画)

含动画的模型(glTF/FBX 骨骼蒙皮、节点动画)通过「⬇ 导入模型」导入后,从大纲拖入序列,在「变换」组上方出现「🎬 动画」轨道行:

  • 点「+加载动画」弹出该物体可用剪辑多选列表(已加载项预勾选,取消勾选=移除);
  • 已加载剪辑在时间线上显示为动画片段块(紫色 section 条):拖动改起始(吸附帧网格)、右键删除;
  • 片段裁剪(v7.3):拖拽片段左右端改入点/出点(可延长回原长)、播放头处剪断拆成两段(视频剪辑软件式);时间线长度自适应扩容;
  • 序列播放时剪辑由 AnimationMixer 驱动;暂停保持当前时间可继续,停止/禁用/解绑级联停止。

16.5 多序列、优先级与循环

  • 多序列:可建任意多个序列,同时启用、独立播放(▶ 也可指定播放非激活序列);
  • 优先级:同一属性被多个启用序列驱动时,优先级大者胜,相等则数值/颜色线性混合;
  • 禁用恢复基线:禁用序列自动把属性写回基线值,与数据绑定、脚本驱动三方共存(详见 20.2.8 冲突说明);
  • 循环:不循环 / 循环 / 往返三态;速率 0.25×~4×;⏪ 倒放(t=0 时从末尾开始,倒完自动停)。

16.6 序列标记物

把序列列表行拖进三维视口,在落点创建 🎬 标记物(序列自动启用):

  • 标记物显示在大纲「🎬 序列」分组(行 = 名称 + 👁 开关 + ✕ 删除),视口中可点选、可沿水平面拖动;
  • 选中标记物后属性面板显示序列属性(名称/启用/优先级/时长/循环/速率/影响物体数)与完整播放控制(播放⇄暂停状态互切、停止、倒放);
  • 「启用」是唯一求值开关:列表勾选框 / 大纲眼睛 / 属性面板开关三方实时同步。

16.7 渲染视频

工具条「渲染视频」:弹窗设置分辨率(当前视口/720p/1080p/2K)、帧率(24/30/60)、码率(8/16/28Mbps)、格式(mp4/webm)→ 从 0 秒播放当前(或选中标记的)启用序列并录制三维视口 → 完成后自动下载 DPE_序列渲染_*.mp4/webm,浮动进度条可取消。无启用含帧序列时会提示先制作动画。

16.8 旧数据迁移(旧「动画时间轴」)

旧版底栏「动画时间轴」页签已移除,功能全部由序列编辑器接管:

  • 旧工程的时间轴数据:旧 state.timeline 关键帧在工程中只读保留,可通过 sequencer.importLegacy 能力一键迁移并入序列「导入的旧动画」(迁移规则:旧 pos/rot/scale 拆为变换三轨、颜色→材质色、灯光强度/相机 FOV 等按白名单映射);v7.3 起面板不再提供「导入旧时间轴」按钮,能力保留供脚本/存档流程调用;
  • 含动画的模型:统一走顶部「⬇ 导入模型」入口(序列面板的「导入动画模型」按钮已移除),导入后从大纲拖入序列即见动画轨道;
  • 典型用法不变:先让机械臂动画播放到指定姿态,再衔接拆卸步骤——用片段块的起始时间对齐即可。
💡 序列支持 export/import 序列化,随 .vtpack 工程保存与恢复;31 个 sequencer.* 能力全部开放给 API/脚本/MCP(见第 19/20 章)。

17. 💾 保存 / 另存为 / 打开

操作说明
保存 Ctrl+S将当前工程保存为 .vtpack 工程包——模型 + 贴图 + 课件逻辑 + 材质 + 步骤 + 序列一体化单文件(含场景状态、面板配置、历史要点)。v7.9.66 起:内置模型库置入的模型同样完整入包,保存/另存/发布后重开不丢。
另存为「📑 另存为」可自定义名称与存储位置(浏览器下载目录或指定文件夹),便于按项目归档或拷贝给同事。
打开点击「📂 打开」选择 .vtpack 工程包(兼容旧 .vtproj / .json / .zip),恢复到保存时的完整编辑状态。
自动保存编辑器定时自动备份当前工程;意外关闭浏览器后重新打开编辑器,可选择恢复最近一次自动存档(预览链接同样基于 IndexedDB 场景存储还原最新编辑场景)。
新建项目「📄 新建」清空配置并复位到默认样机;新建项目弹窗要求输入项目名称,自动同步工程名/课件标题/发布名。
⚠️ 外部贴图是例外:保存工程不打包您另行指定的外部贴图文件,重开工程后需重新指定(见第 9 章末尾注意事项)。

18. 🚀 发布与播放器

点击顶部「🚀 发布课件」弹出发布面板,四种发布形态:

  1. 📦 项目文件(.vtpack)★推荐(主形态):模型 + 课件逻辑 + 材质 + 步骤一体化的项目工程文件;用播放器(player.html)打开即自动进入课件播放模式,免安装、可离线分发。
  2. ☁ 在线分享链接:工程文件存入云端工程库后生成直开链接,学员点开链接即播放在线加载课件(云端工程库服务接入后生效,当前先提供本地部署播放器链接)。
  3. 🎬 录制培训视频:自动进入演示模式完整播放拆装流程,同时录制三维视口为视频文件(webm/mp4)保存到本地。
  4. 🔗 集成导出(嵌入第三方系统·兼容):导出兼容课件包(glb + json)并生成 iframe 嵌入代码;播放器支持 URL 参数直读,可嵌入任意系统页面(进度条真实推进至 100%)。

播放器(player.html)

  • 纯净播放器:无品牌字样(标题随课件名),播放什么课件完全由您加载的项目决定;主入口为「📦 打开项目文件(.vtpack,兼容旧 json + glb 分离格式,自动识别)」。
  • 三种学习模式:演示学习 / 培训练习 / 考核;进入模式后不自动开始,显示「开始播放 / 开始练习 / 开始考核」大按钮,点击才启动(考核点开始才计时);模式中可随时打开其他课件。
  • 播放器材质继承:编辑器中赋的材质(颜色/金属度/粗糙度/发光/贴图)随工程包带入播放器;五格式模型通吃,编辑器改色→保存→播放器逐项一致。
  • 只读环境:学员只能观看流程、参与考核,不能改动课件内容,放心分发。学员无需安装任何软件,浏览器点开即学。
📌 预览模式(编辑器顶栏「👁 预览」):隐藏全部编辑界面做纯三维展示,禁一切编辑(无手柄/点击不选中/大纲只读),SDK 事件仍可订阅;「🔗 预览链接」复制带 ?preview=1 参数的链接供 iframe 嵌入用 DPE API 控制。

19. 🔌 DPE API:UI 图表编辑器 ↔ Web3D 编辑器联动

版本 v1.0.0 · 适用:任意 Web 系统通过 iframe 嵌入 DPE 数字样机编辑器 · 无依赖,Vue / React / 原生 JS 通用

cimpro3d-api.js 是挂在 window.CIMPro3D 上的 UMD 模块,为父页面提供对象、材质、相机、灯光、动画、天气、GIS 图层、数据驱动创建等八类场景控制能力。父子页面跨域时走 postMessage 双向桥(Promise 化),同源时也可直接调用。

💡 动手前先开测试台:仓库自带 api_test.html(DPE API 父页面测试台,分组按钮 + 事件日志,直接双击可用)与 sdk/demo.html(v7.2 SDK 双模式演示 + 性能测试)。v7.2 起另有 DPE SDK(direct 直嵌 / iframe / auto 三模式,UMD/ESM 双格式 + TypeScript 类型定义,30 项播放域能力 + setData 万能驱动口,详见 docs/sdk.md)——iframe 集成用本章 API,深度嵌入推荐 SDK direct 模式(实测高频调用比 iframe 方式快 15~27 倍)。
🧪 在线 DPE API 示例中心:api-playground.html(交互式运行全部 360 项能力:参数表单自动生成 + 结果 JSON + 事件日志 + 10 个一键示例脚本,三维场景实时可见)
📄 完整 API 参考文档:api-reference.html(postMessage / JS SDK / MCP 三种接入方式 + 360 项能力参数表与三形态调用示例,由 manifest 自动生成,网页版可搜索可折叠)

19.1 集成方式

① 编辑器侧(子页面,一行接入)

<!-- 主文件尾部,module 脚本之后 -->
<script src="cimpro3d-api.js"></script>

模块内部经 window.__scene / window.__state / window.__dbg 钩子访问编辑器(主文件已内置);缺省自动降级为 DOM 控件 / 纯场景操作。补充可选钩子 window.__hooks 后能力完整(见 X.7)。

② 父页面侧(UI 图表编辑器)

<iframe id="editor3d" src="https://your-host/index.html"
        style="width:100%;height:640px;border:0;"></iframe>
<script src="cimpro3d-api.js"></script>
<script>
  const bridge = CIMPro3D.createBridge(document.querySelector('#editor3d'));
  await bridge.ready;                       // ready 握手
  await bridge.call('setWeather', '雨天');   // Promise 化调用
  bridge.on('select', ({id, name}) => console.log('三维中选中:', name));
</script>
同源场景可省略桥接,直接 iframe.contentWindow.CIMPro3D.setWeather('雨天')

19.2 API 方法总表

基础与事件

方法说明返回
VERSIONAPI 版本号(属性)'1.0.0'
ready()就绪握手,轮询至编辑器可用Promise<{version}>
ping()探活(桥握手用){version, ready}
on(event, cb) / off(event, cb)订阅事件:ready / select / stepChange / 自定义取消订阅函数
emit(event, data)触发本地事件并广播给父页面
listAPI()方法清单(自省)string[]

对象控制

方法说明参数要点
getObject(nameOrId)对象描述(位姿/可见性),未找到返回 null构件 name 或 id
listObjects()全部可控对象清单
setPosition(name, pos)设置位置pos: [x,y,z]
setRotation(name, rot)设置欧拉角(弧度)rot: [x,y,z]
setScale(name, s)缩放数值或 [x,y,z]
setVisible(name, v)显隐boolean
setOpacity(name, o)透明度 0~1自动开启 transparent
highlight(name, color?, label?)高亮(描边+自发光+可选标注)color 缺省 #3d9dff
clearHighlight()清除高亮
focus(name, flyTime?)相机聚焦对象flyTime 秒,缺省 1.2
createPrimitive(type, opts)创建基础几何体并注册为构件box|sphere|cylinder|cone|plane|torus
removeObject(name)删除对象

材质

方法说明
setColor(name, color)颜色,支持 '#ff6600' / 0xff6600
setMetalness / setRoughness(name, v)PBR 金属度 / 粗糙度 0~1
setEmissive(name, color, intensity?)自发光
applyPreset(name, preset)预设:steel | copper | gold | plastic | rubber | glass | paintedRed

相机

方法说明
setCameraView(pos, target, flyTime?)飞行到指定机位;flyTime=0 瞬移
getCameraView()当前机位(target 需 controls 钩子,否则为 null)
setNavMode(mode) · orbit() bird() fp()漫游切换:orbit 轨道 | bird 鸟瞰 | fp 第一人称 | tp 第三人称

灯光

方法说明
createLight(type, opts)point | spot | directional,opts:{name,color,intensity,pos,castShadow}
setLightIntensity / setLightColor(idOrName, v)调光(按 id 或名称)
removeLight(idOrName) / listLights()删除 / 清单

动画

方法说明
playTimeline() / pause() / stop()序列播放 / 暂停 / 停止归零(兼容别名 pauseTimeline / stopTimeline;等价驱动底栏「🎬 序列」)
setTime(t)跳转到 t 秒(暂停态)
playClip(name) / listClips()播放导入模型自带剪辑 / 剪辑清单(剪辑亦可在序列编辑器中加载为动画轨道)
sequencer.*(31 项能力)序列编辑器全量开放:create/addKey/play/reverse/setPriority/renderVideo 等(见 docs/sequencer.md 能力清单)

天气 / 环境

方法说明
setWeather(name)晴天 | 多云 | 阴天 | 雨天 | 雪天(自动开天空)
setSkyOn(on)大气天空 + GI 环境光开关
setExposure(v)色调映射曝光 0.2~2

图层 / GIS · 数据驱动

方法说明
load3DTiles(url) 需钩子加载 3D Tiles(tileset.json),返回 Promise
clearGIS()清除全部 GIS 数据
setLayerVisible(name, v) / listLayers()图层显隐 / 清单(GIS 根节点、导入模型、构件通用)
createFromData(arr)批量数据驱动创建,元素:{type,pos,color,size,name,data…}
clearDataObjects()清除全部数据对象,返回清除数量

19.3 postMessage 消息协议

命名空间 ns:'cimpro3d',三种帧:

// 父 → 子:命令
{ ns:'cimpro3d', type:'cmd', id:'m1', method:'setWeather', args:['雨天'] }

// 子 → 父:响应(ok/result 或 ok:false/error)
{ ns:'cimpro3d', type:'res', id:'m1', ok:true, result:true }
{ ns:'cimpro3d', type:'res', id:'m1', ok:false, error:'未找到对象:转轮' }

// 子 → 父:事件广播
{ ns:'cimpro3d', type:'event', event:'select', data:{ id:'p3', name:'转轮' } }
手写 postMessage 也可互通,无需 createBridge;桥接层只是做了 id 配对、Promise 化与超时兜底(默认 10s)。安全收敛:子页面 CIMPro3D.init({ origins:['https://your-host.example.com'] }) 开启 Origin 白名单。

19.4 Vue 3 用法

<template>
  <iframe ref="frame" src="/editor/index.html" />
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue';
import 'cimpro3d-api.js';            // 或 public 目录 script 标签引入
const frame = ref(null);
let bridge, offSelect;
onMounted(async () => {
  bridge = window.CIMPro3D.createBridge(frame.value);
  await bridge.ready;
  offSelect = bridge.on('select', ({ name }) => console.log(name));
  await bridge.call('focus', '转轮');
});
onBeforeUnmount(() => { offSelect?.(); bridge?.destroy(); });
</script>

19.5 React 用法

import { useEffect, useRef } from 'react';
import 'cimpro3d-api.js';

export default function Editor3D() {
  const ref = useRef(null);
  useEffect(() => {
    const bridge = window.CIMPro3D.createBridge(ref.current);
    const off = bridge.on('select', ({ name }) => console.log(name));
    bridge.ready.then(() => bridge.call('setWeather', '多云'));
    return () => { off(); bridge.destroy(); };
  }, []);
  return <iframe ref={ref} src="/editor/index.html"
                 style={{ width: '100%', height: 640, border: 0 }} />;
}

19.6 典型场景:图表联动三维

// ECharts 饼图点击 → 三维高亮 + 聚焦
chart.on('click', async (p) => {
  await bridge.call('clearHighlight');
  await bridge.call('highlight', p.name, '#f5a524');
  await bridge.call('focus', p.name, 1.0);
});
// 实时数据 → 数据驱动标牌
await bridge.call('clearDataObjects');
await bridge.call('createFromData', sensors.map(s => ({
  type: 'sphere', name: s.id, pos: [s.x, s.y, s.z],
  radius: 0.3, color: s.alarm ? '#e5484d' : '#34c98e', data: s
})));

19.7 可选增强钩子与降级行为

主文件尾部追加一行即可获得完整能力(缺省时按下表降级):

window.__hooks = { THREE, renderer, camera, controls, flyCamera,
  addLight, removeLight, renderLightList, highlightPart, clearHighlights,
  regNode, renderAll, WEATHERS, updateSky, gisClear, tlSetTime,
  load3DTiles: load3DTilesReal,
  tlPlay:  () => $('#tlPlay').click(),
  tlPause: () => $('#tlPause').click(),
  tlStop:  () => $('#tlStopAll').click() };
能力无钩子时的降级
时间轴 play/pause/stop、天气、天空、曝光、clearGIS点击/设置主文件既有 DOM 控件,行为与界面操作一致
setCameraView / focus内置补间飞行;getCameraView 的 target 返回 null
createLight / removeLight纯内核三维 API 创建并登记 state.lights(侧栏列表不即时刷新)
load3DTiles不可用(3d-tiles-renderer 为模块内私有),必须配钩子
注意:file:// 直开时 iframe 与父页面互视为不透明源(origin 'null'),建议用本地静态服务(如 python3 -m http.server)调试;跨域部署时把 createBridgetargetOrigin 收敛为编辑器实际源。

🛰 数据驱动(数字孪生)

外部系统通过 dataPush 实时驱动场景任意对象;变换自动走平滑插值补间(默认 1.2 秒),数据稀疏(如每分钟一次)也能连续运动;驱动根构件自动带动整个层级(如坦克整车)。

方法说明
dataPush(name, payload, opts)payload: {pos:[x,y,z]}{lonlat:[经,纬,海拔]}rotscalecoloremissiveopacityvisible;opts: {smooth:秒}
setGeoOrigin(lon,lat,米/单位)经纬度→场景坐标映射锚点(接入真实地理数据前必调)
dataAlert(name,color,times)报警脉冲:材质红闪 N 次后自动恢复
// 物联网平台每 60s 推送坦克经纬度 → 平滑行驶
setInterval(async ()=>{
  const d = await fetch('/api/tank').then(r=>r.json());
  bridge.call('dataPush', '坦克', { lonlat:[d.lon, d.lat, d.alt] }, { smooth:60 });
}, 60000);
// 设备报警 → 变红闪烁
bridge.call('dataAlert', '泵机A', '#ff2200', 8);

20. 📜 脚本系统与数据驱动实战

v7.0 起提供两套互补的「让场景动起来」的机制:脚本系统(左侧「📜 脚本」页签,游戏引擎组件式心智模型)与数据驱动(左侧「📡 数据」页签,数字孪生数据绑定引擎)。本章从入门讲到实例,最后给出四层协作的综合实战。

20.1 脚本系统(左侧「📜 脚本」页签)

20.1.1 入门:什么是脚本驱动

脚本系统采用 游戏引擎组件式心智模型:一个脚本 = 一段挂在某个构件上的小程序,引擎按帧调度它,你在四个生命周期钩子里写逻辑(初始化 / 每帧更新 / 响应事件 / 销毁清理),通过 ctx 上下文读写场景属性——不需要接触底层三维 API,也不需要操作 DOM。

  • 脚本模型{name, target:'构件名|*', code, enabled}。宿主(target)是脚本默认操作的构件;ctx.get/set 直接作用于宿主,操作其他构件用 ctx.find('名称')
  • 调度:全部脚本共享一个 requestAnimationFrame 循环,dt 为帧间隔秒数(钳制 0~0.1,切后台回来不会跳变)。
  • 安全:软沙箱编译——window / document / fetch / WebSocket / setTimeout 等全局被屏蔽为 undefined,脚本只能通过 ctx 触碰场景。

20.1.2 面板入口与创建流程

  1. 点击左侧页签栏「📜 脚本」打开脚本面板(顶部有 ▶ 运行引擎 / 暂停 / 单步 按钮)。
  2. 顶部下拉选择模板,点「+从模板新建」(7 个开箱模板),或点「+空白」从零编写。
  3. 确认宿主构件:默认取当前选中构件,无选中时取场景第一个构件,也可手填其他构件名或 *
  4. 在代码编辑器中修改代码,点「💾 保存并重编译」
  5. 打开脚本行的启用开关即生效——引擎未运行时会自动启动,不必手动点「运行引擎」。
面板还提供导出 / 导入(脚本全集 JSON,随工程迁移)、暂停 / 单步(暂停后每点一次单步推进 1/60 秒,方便观察每帧行为)。

20.1.3 生命周期 API

代码中直接声明以下函数即可(也支持顶层 return {onInit, onUpdate, ...} 的写法),运行在严格模式软沙箱中:

钩子签名调用时机与典型用途
onInit(ctx)首帧之前调用一次记录初始值(如起始高度)、初始化状态、订阅事件
onUpdate(ctx, dt)每帧调用(引擎运行且未暂停)按时间驱动的动画与逻辑;dt 为帧间隔秒
onEvent(ctx, name, payload)任意事件到达时响应 object.clicked(点击)、binding.rule.triggered(数据告警)、prop.changed(属性变化)及自定义事件
onDestroy(ctx)停用 / 删除 / 重编译前调用清理收尾;ctx.on 订阅由框架自动注销,无需手工退订

20.1.4 ctx 上下文 API 参考

ctx 是脚本与场景的唯一触点(对象已冻结,不可篡改):

API示例返回 / 说明
ctx.target宿主构件名(创建脚本时填的 target)
ctx.get(path)ctx.get('transform.position.y')返回宿主构件属性值
ctx.set(path, val)ctx.set('material.color', '#f00')写宿主构件属性(记录驱动归属 source:'script')
ctx.find(name)ctx.find('主轴')按名称/id 找其他构件/灯光/标签,返回 {name, get, set} 句柄;找不到返回 null
ctx.timectx.time.t / .dt / .frame共享时间对象:t 累计秒、dt 帧间隔秒、frame 帧号
ctx.on(event, fn)ctx.on('object.clicked', fn)订阅事件,返回取消订阅函数;payload 为事件数据
ctx.emit(name, payload)ctx.emit('my.event', {a:1})向全局事件总线发出事件(可被其他脚本/API 收到)
ctx.mathctx.math.deg2rad(5)数学工具集:clamp / lerp / deg2rad / rad2deg / sin / cos / abs / sqrt / pow / min / max / floor / round / random / PI
ctx.log(...args)ctx.log('高度', 1.2)输出到面板「运行日志」;对象自动 JSON 序列化,Error 输出堆栈

20.1.5 属性路径速查表

所有驱动方式(GUI / 数据绑定 / 脚本 / API)共用同一套属性路径,完整清单如下:

元素类型属性路径类型与说明
构件(part)transform.position.x / .y / .znumber · 位置(米)
transform.rotation.x / .y / .znumber · 欧拉角(弧度,写角度先 deg2rad
transform.scale.x / .y / .znumber · 缩放(1 = 原始)
visibilityboolean · 显隐
构件材质material.color / material.emissive'#rrggbb' · 漫反射颜色 / 自发光颜色
material.emissiveIntensity · material.metalness · material.roughness · material.opacitynumber · 自发光强度 / 金属度 0~1 / 粗糙度 0~1 / 不透明度 0~1
标签(label)label.text · label.visible · label.color · label.bg · label.fontSizestring / boolean / 颜色 / 字号 · POI 实时数据常用 label.text
灯光(light)intensity · color · visiblenumber / '#rrggbb' / boolean
材质类路径作用于构件的首个网格并遍历全部网格材质统一设置(多材质数组同样生效)。

20.1.6 脚本实例(7 例)

实例 1:每帧绕 Y 轴旋转 5°(官方验收用例)

目标:让构件持续自转,每秒 5°(按 dt 累加,与帧率无关)。这是脚本系统的官方验收用例,也是模板库第一项。

// 每帧绕 Y 轴旋转 5°(官方验收用例)
function onUpdate(ctx, dt){
  const step = ctx.math.deg2rad(5) * dt;
  ctx.set('transform.rotation.y', ctx.get('transform.rotation.y') + step);
}

效果:构件绕 Y 轴匀速旋转;60fps 下每帧约转 0.083°,任意帧率下转速恒定。

实例 2:正弦上下浮动(电梯 / 漂浮物)

目标:以初始高度为中心,按正弦规律上下浮动,模拟电梯升降或漂浮物。

// 正弦上下浮动
var y0 = 0, AMP = 0.5, FREQ = 0.5; // 振幅(米) / 频率(Hz)
function onInit(ctx){ y0 = ctx.get('transform.position.y'); }
function onUpdate(ctx){
  ctx.set('transform.position.y', y0 + AMP * ctx.math.sin(2 * ctx.math.PI * FREQ * ctx.time.t));
}

效果:构件在 y0 ± 0.5m 之间以 0.5Hz 往复;改 AMP/FREQ 即调幅度与快慢。onInit 记录初始高度,保证从任意位置开始都不漂移。

实例 3:呼吸灯(设备状态指示)

目标:设备状态灯周期性明暗脉动,模拟「运行中」的呼吸灯效果。

// 呼吸灯:材质 emissiveIntensity 脉动
function onInit(ctx){ ctx.set('material.emissive', '#ff8800'); }
function onUpdate(ctx){
  const k = 0.5 + 0.5 * ctx.math.sin(2 * ctx.math.PI * 0.8 * ctx.time.t);
  ctx.set('material.emissiveIntensity', 0.2 + 1.8 * k);
}

效果:自发光强度在 0.2~2.0 之间以 0.8Hz 呼吸式脉动,橙色状态灯忽明忽暗。

实例 4:跟随另一构件(AGV 跟随)

目标:本构件每帧跟随另一构件的 XZ 坐标(如巡检云台跟随 AGV、吊钩跟随小车)。

// 跟随另一个构件(修改 FOLLOW 为目标构件名)
var FOLLOW = '主轴';
function onUpdate(ctx){
  const other = ctx.find(FOLLOW);
  if(!other){ return; }
  ctx.set('transform.position.x', other.get('transform.position.x'));
  ctx.set('transform.position.z', other.get('transform.position.z'));
}

效果:把 FOLLOW 改成目标构件名后,本构件每帧贴住其水平位置(高度不变)。加一个偏移量即可实现「保持距离的跟随」。

实例 5:点击变色(onEvent object.clicked)

目标:在视口中点击到宿主构件时随机换一种颜色,做交互标注。

// 点击变色:需要场景在拾取后 emit('object.clicked', {name:构件名})
var PALETTE = ['#e74c3c','#f5a524','#34c98e','#3d9dff','#a06cff'];
function onEvent(ctx, name, payload){
  if(name !== 'object.clicked'){ return; }
  const hit = payload && (payload.name || payload.target || payload.id);
  if(hit !== ctx.target){ return; }            // 只响应点到自己
  ctx.set('material.color', PALETTE[ctx.math.floor(ctx.math.random() * PALETTE.length)]);
  ctx.log('被点击,已变色');
}

效果:每次点到该构件就从 5 色调色板随机换色;点到别的构件不响应。运行日志会同步输出记录。

实例 6:告警闪烁(配合数据绑定规则事件)

目标:收到告警事件(如电量过低规则触发)后,构件闪烁 3 秒提示现场人员。

// 告警闪烁:配合数据绑定规则事件(或任何 alarm 事件)
var until = -1;
function onEvent(ctx, name, payload){
  if(name === 'binding.rule.triggered' || /alarm|告警/i.test(name)){
    until = ctx.time.t + 3; // 再闪 3 秒
    ctx.log('收到告警事件:', name);
  }
}
function onUpdate(ctx){
  if(ctx.time.t < until){ ctx.set('visibility', ctx.math.sin(ctx.time.t * 20) > 0); }
  else { ctx.set('visibility', true); }
}

效果:数据绑定规则触发(见 20.2.4)或任何名称含 alarm/告警 的事件到达时,构件以约 3Hz 频率显隐闪烁 3 秒后自动恢复。与 20.2 的「电量过低」实例配套使用。

实例 7:定时任务(每 10 秒自检一次,ctx.time)

目标:周期性执行检查/上报逻辑。沙箱中禁用 setTimeout/setInterval,定时必须用 ctx.time.t 自己算。

// 定时任务:每 10 秒自检一次(利用 ctx.time,禁用 setTimeout)
var LAST = -1;
function onInit(ctx){ ctx.log('自检脚本已启动,每 10 秒检查一次'); }
function onUpdate(ctx){
  if(ctx.time.t - LAST < 10){ return; }        // 距上次自检不足 10 秒
  LAST = ctx.time.t;
  const y = ctx.get('transform.position.y');
  ctx.log('自检通过 · 累计运行 ' + ctx.time.t.toFixed(1) + 's · 当前高度 ' + y.toFixed(2) + 'm');
}

效果:面板「运行日志」每 10 秒多一条自检记录(含时间与状态值)。把 ctx.log 换成 ctx.emit('device.selfcheck', {...}) 即可上报给其他脚本或外部系统。

20.1.7 编辑器功能(CodeMirror IDE 化)

功能说明
语法高亮 + 行号CodeMirror 编辑器(vendor 本地化,无 CDN),JS 关键字/字符串/注释着色,行号可开关;加载失败自动回退纯 textarea,功能不丢
ctx. 自动补全输入 ctx. 弹出成员提示(右侧带用途说明);选中 get(/set(链式弹出属性路径(自动补引号);ctx.math. 弹数学函数;输入 on 弹生命周期函数模板,光标自动落到函数体;Ctrl+Space 手动触发,Tab 两空格软缩进
模板库7 个开箱模板:绕 Y 旋转 / 正弦浮动 / 呼吸灯 / 跟随构件 / 点击变色 / 告警闪烁 / 缩放脉冲,一键创建
运行日志与复制底部日志区收集 ctx.log 输出与错误堆栈(上限 300 条);「📋 复制」把全部日志压平为单行文本(行数=条数)写入剪贴板,方便贴进工单
引擎控制▶ 运行引擎 / ⏹ 停止 / 暂停·继续 / 单步(暂停态每次推进 1/60 秒,逐帧调试)
熔断机制单脚本单帧执行超 8ms 预算或抛错 → 自动禁用该脚本(toast + 日志说明原因),不崩页面、不波及其他脚本;修正后重新打开启用开关即可(清除熔断态,下一帧重新 onInit)
导出 / 导入脚本全集(含启用态)导出为 JSON 文件 / 从 JSON 导入,随工程或团队共享

20.1.8 注意事项

  • 8ms 帧预算:单脚本单帧超 8ms 即熔断。不要在 onUpdate 里做遍历大模型、深拷贝大对象等重活;重计算放 onInit 缓存结果。
  • 禁 window 访问window / document / fetch / XMLHttpRequest / WebSocket / localStorage / setTimeout / setInterval 等均被屏蔽为 undefined,访问即抛错熔断。定时用 ctx.time,网络数据交给 20.2 的数据绑定。
  • 错误自动禁用:编译失败 / 装载失败 / 运行抛错都会让脚本进入 error 态并在列表标红显示原因;「保存并重编译」后重新启用即可。
  • 事件回调有风暴保险丝(嵌套深度超过 16 层的事件链会被丢弃),防止脚本间互相 emit 死循环。
  • 角度单位是弧度:写角度记得 ctx.math.deg2rad()

20.2 数据驱动(左侧「📡 数据」页签)

20.2.1 入门:什么是数据驱动

数据驱动(数字孪生)= 把外部数据源的实时字段,绑定到场景元素的属性上:数据一来,AGV 自动移动、状态灯自动变色、POI 标签自动刷新——全程零代码。点击左侧页签「📡 数据」打开数据绑定面板(两个页签:绑定 / 告警规则;顶部状态条显示引擎运行状态、绑定数、规则数、累计写入次数)。

场景属性共有四种驱动方式,全部经过同一属性层(同一套属性路径),每次写入都记录来源:

驱动方式入口适合场景归属标记
GUI 手动属性面板 / 视口手柄静态搭建、编辑期调整gui
数据绑定📡 数据页签外部系统实时数据驱动(本章)binding
脚本📜 脚本页签过程逻辑、每帧计算、事件响应(20.1)script
API / SDK / MCP外部系统调用(第 19 章)父页面集成、自动化、大模型操作api

20.2.2 数据源类型

类型适用场景必填参数示例值(数据源参数 JSON)
simulator本地演示 / 教学验收 / 无外部系统联调mode{"mode":"sine","freq":0.5,"amp":2,"offset":0};random:{"mode":"random","amp":1,"intervalMs":500};playback:{"mode":"playback","values":[25,15],"intervalMs":1000,"loop":true}
http-poll有 REST 接口、数据更新不频繁(秒级)url{"url":"http://127.0.0.1:9000/data","interval":2000,"headers":{}}
websocket服务端主动推送的高频实时数据(位置姿态)url{"url":"ws://127.0.0.1:9001"}
mqtt物联网总线、多主题订阅urltopic{"url":"ws://broker:9001/mqtt","topic":"agv/+/pose"}(可带 username/password/clientId)
piadmin漂视工作台数据源(企业数字孪生,见 20.2.8)datasetId{"baseUrl":"https://piadmin.picimos.com/datasource","token":"<TOKEN>","datasetId":"<数据集ID>"}
simulator 四种模式:sine(正弦波,freq/amp/offset)、random(区间随机,amp/offset/intervalMs)、playback(按 values 数组顺序回放,intervalMs/loop)、const(恒值 value)。相同配置的绑定共享同一条连接(适配器池),三条 websocket 绑定不会开三条连接。

20.2.3 绑定模型:数据源 → JSON 路径 → 转换 → 目标属性

数据源(simulator / http-poll / websocket / mqtt / piadmin)
  │  每帧 adapter.read() 读取最新数据(JSON)
  ▼
JSON 路径取值  path:如 $.value$.agv.pose.x$ 为根)
  ▼
转换  transform{"map":[inMin,inMax,outMin,outMax]} 线性映射 | {"expr":"x*2+1"} 表达式(x=数值)
  ▼
平滑  smooth:位置/旋转类属性默认 0.2 指数平滑 → 节流  throttleMs → 脏检查(|Δ|>1e-4 才写)
  ▼
帧内批量提交:同一对象同一属性多条绑定只保留最后一笔
  ▼
写入场景属性(记录 source:'binding') → 规则引擎求值(告警规则) → 广播 prop.changed 事件
参数字段默认与说明
节流throttleMs默认 0(每帧);距上次写入不足该毫秒数则本帧跳过。数据高频但写入无需太密时设置,如 200ms
平滑transform.smooth位置/旋转类属性(transform.position.* / rotation.*)默认 0.2,其余默认关闭;指数平滑因子 0.01~1,越大跟随越快;填 0(即 false)关闭。数据稀疏(如每分钟一个点)时 AGV 也能连续滑行

20.2.4 阈值告警规则

  • when 条件{object, path, op, value}——监视任意场景属性,op 支持 < > <= >= == !=
  • 边沿触发:条件由假变真的那一刻执行一次(锁存),条件恢复为假后自动复位、允许下次再触发——不会每个帧重复触发;面板实时显示「已触发 N 次 / 当前告警中」。
  • 动作类型:①prop——设置任意对象属性(如 material.emissive='#ff2200',归属 source:'rule');②event——发送自定义事件(可带 payload)。
  • 统一触发事件:每条规则触发时引擎都会广播 binding.rule.triggered(含 ruleId/ruleName/value/when)——脚本模板「告警闪烁」正是消费这个事件实现声光联动(见 20.1.6 实例 6)。

20.2.5 数据驱动实例(5 例)

每个实例给出面板配置步骤与等价的 JSON(JSON 可通过能力 binding.create / rule.create 调用,或「导出」按钮从剪贴板获取同构数据)。创建绑定后面板会自动启动引擎。

实例 1:simulator 正弦波驱动顶盖 Y 位置(最简入门)

步骤:📡 数据页签 → 绑定 →「+ 新建绑定」→ 数据源类型选 simulator、参数粘 {"mode":"sine","freq":0.5,"amp":1,"offset":0} → 数据路径 $.value → 目标对象选「顶盖」、属性路径选 transform.position.y → 转换填 -1,1,0.4,2.0(把正弦的 -1~1 映射到 0.4~2.0 米)→ 创建绑定。

{
  "name": "顶盖高度演示",
  "enabled": true,
  "source": { "type": "simulator", "mode": "sine", "freq": 0.5, "amp": 1, "offset": 0 },
  "path": "$.value",
  "transform": { "map": [-1, 1, 0.4, 2.0] },
  "target": { "object": "顶盖", "property": "transform.position.y" }
}

效果:顶盖在 0.4~2.0 米间以 0.5Hz 平滑升降(位置类属性默认启用指数平滑,运动无毛刺)。状态条可见绑定数与累计写入次数持续增长。

实例 2:simulator playback 模拟电量下降 → 低于 20% 触发告警 → 构件变红闪烁

步骤:① 新建绑定:playback 模式回放电量序列 [95,85,70,55,40,25,18,12],map 把 0~100 映射到状态灯自发光强度 0.15~2.0;② 切到「告警规则」页签新建规则:监视状态灯的 material.emissiveIntensity,条件 <= 0.51(≈电量 20%),动作①设置 AGV 本体颜色为红色、动作②发送事件 alarm.battery;③ 给 AGV 挂上 20.1.6 实例 6 的「告警闪烁」脚本。

// 绑定:电量 → 状态灯亮度
{
  "name": "AGV-01 电量监视",
  "source": { "type": "simulator", "mode": "playback",
              "values": [95, 85, 70, 55, 40, 25, 18, 12], "intervalMs": 1000, "loop": true },
  "path": "$.value",
  "transform": { "map": [0, 100, 0.15, 2.0] },
  "target": { "object": "AGV-01状态灯", "property": "material.emissiveIntensity" }
}
// 告警规则:电量过低(20% 对应强度约 0.52)
{
  "name": "电量过低告警",
  "when": { "object": "AGV-01状态灯", "path": "material.emissiveIntensity", "op": "<=", "value": 0.51 },
  "actions": [
    { "type": "prop", "target": "AGV-01", "property": "material.color", "val": "#e5484d" },
    { "type": "event", "name": "alarm.battery", "payload": { "level": "low" } }
  ]
}

效果:电量逐秒下降、状态灯同步变暗;降到 18%(第二圈)时规则边沿触发一次——AGV 本体变红,同时 binding.rule.triggered 事件唤醒告警闪烁脚本,AGV 明暗闪烁 3 秒。回放循环回到高电量后规则复位,下一圈可再次触发。规则面板显示「已触发 N 次」。

实例 3:websocket 实时数据驱动 AGV 位置

步骤:新建三条绑定,数据源均为 {"type":"websocket","url":"ws://127.0.0.1:9001"}(共享一条连接),分别绑定 x / z / 朝向:

{ "name": "AGV-01 位置X", "source": { "type": "websocket", "url": "ws://127.0.0.1:9001" },
  "path": "$.agv.pose.x", "target": { "object": "AGV-01", "property": "transform.position.x" } }

{ "name": "AGV-01 位置Z", "source": { "type": "websocket", "url": "ws://127.0.0.1:9001" },
  "path": "$.agv.pose.z", "target": { "object": "AGV-01", "property": "transform.position.z" } }

{ "name": "AGV-01 朝向", "source": { "type": "websocket", "url": "ws://127.0.0.1:9001" },
  "path": "$.agv.heading", "transform": { "expr": "x * Math.PI / 180" },
  "target": { "object": "AGV-01", "property": "transform.rotation.y" } }

// 服务端推送的 JSON 消息格式(每 200ms 一条):
// { "agv": { "id": "AGV-01", "pose": { "x": 12.4, "y": 0, "z": -3.2 },
//            "heading": 90, "speed": 1.8, "battery": 76 } }

效果:消息一到,AGV 位置与朝向立即更新;位置/旋转默认平滑使运动连续无跳变。朝向用 expr 把「度」转「弧度」。y 不绑定则保持原高度(也可加 $.agv.pose.y 一条)。

实例 4:http-poll 轮询设备状态 → 驱动材质颜色(正常绿 / 告警红)

步骤:接口约定返回 {"status":0}(0=正常,1=告警),用表达式把状态码映射为颜色:

{
  "name": "泵机A 状态灯",
  "source": { "type": "http-poll", "url": "http://127.0.0.1:9000/api/device/pump-a", "interval": 2000 },
  "path": "$.status",
  "transform": { "expr": "x > 0 ? '#e5484d' : '#34c98e'" },
  "target": { "object": "泵机A", "property": "material.color" }
}

效果:每 2 秒轮询一次;status=0 泵体常绿,status=1 立即变红。字符串值也走脏检查(值不变不写)。若接口返回的是字符串状态(如 "run"/"alarm"),请先在接口侧或 map 中数值化。

实例 5:POI 标签实时数据(速度 / 电量显示)

目标:让吸附在 AGV 上的标签实时显示速度与电量——标签是独立元素,目标对象选标签(其 id),属性路径为 label.text

{ "name": "AGV-01 速度标签", "source": { "type": "http-poll", "url": "http://127.0.0.1:9000/api/agv/01", "interval": 2000 },
  "path": "$.speed", "transform": { "expr": "'速度 ' + x.toFixed(1) + ' m/s'" },
  "target": { "object": "lbl_agv01", "property": "label.text" } }

{ "name": "AGV-01 电量标签", "source": { "type": "http-poll", "url": "http://127.0.0.1:9000/api/agv/01", "interval": 2000 },
  "path": "$.battery", "transform": { "expr": "'电量 ' + Math.round(x) + '%'" },
  "target": { "object": "lbl_agv01", "property": "label.text" } }

// 离线演示版(无需接口,playback 轮播字符串):
{ "name": "电量标签(离线演示)",
  "source": { "type": "simulator", "mode": "playback",
              "values": ["电量 95%", "电量 72%", "电量 48%", "电量 25%", "电量 18%"], "intervalMs": 2000, "loop": true },
  "path": "$.value", "target": { "object": "lbl_agv01", "property": "label.text" } }

效果:标签文字随数据刷新(如「速度 1.8 m/s」「电量 76%」);配合 label.color / label.bg 绑定还能让标签颜色随状态变化。注意:同一标签的 label.text 被多条绑定同时驱动时,帧内只保留最后一笔——速度与电量请拼进一条(expr 中合并)或分别绑定 label.textlabel.bg 等不同属性。

20.2.6 驱动归属面板(whoDrives)

每次属性写入都会记录来源,绑定列表每一行都显示「驱动归属: source @ 时间」——这个属性现在被谁驱动、最后一次写入是什么时候,一眼可查(来源取值:gui / binding / script / rule / api)。控制台亦可直查:

// 查询某属性当前被谁驱动(返回 { source, t } 或 null)
CIMPRO.props.whoDrives('AGV-01', 'transform.position.x')
// → { source: "binding", t: 1726636800000 }
排查「属性怎么不听使唤」就靠它:如果归属显示 binding 而你在属性面板改不动,是因为数据绑定每帧都在覆写——先停用对应绑定再手动调整。

20.2.7 piadmin 对接(漂视工作台数据源)

piadmin 适配器面向企业工作台数据源接入,优先 WebSocket 实时推送,失败自动降级为 5 秒轮询。接口常量(联调时以 piadmin.picimos.com/datasource 实际接口为准):

常量(PIADMIN_API)说明
datasets:GET /api/datasets数据集列表(用于选择 datasetId)
datasetData:GET /api/datasets/{id}/data数据集最新数据(降级轮询用)
datasetWs:WS /ws/datasets/{id}数据集实时推送(优先通道,token 以查询参数附带)
authHeaderAuthorization: Bearer <token>(鉴权头形式待联调确认)
defaultBaseUrlhttps://piadmin.picimos.com/datasource
pollMs5000(WS 失败后的降级轮询间隔)

接入步骤:① 工作台获取数据集 ID 与访问 token;② 用能力 datasource.test 验连通({type:'piadmin', token, datasetId} 会返回数据集清单);③ 新建绑定:数据源类型 piadmin,参数 {"baseUrl":"...","token":"...","datasetId":"..."};④ 数据路径按推送 JSON 结构填(如 $.fields.temp.value)。

联调校准点:数据集列表返回结构(当前兼容 {data:[...]} / {list:[...]} / 直接数组三种形态,联调后收窄)、鉴权头形式、WebSocket 推送消息的字段结构——这三处以实际接口回包为准,适配常量集中在 modules/databind/databind.js 顶部的 PIADMIN_API

20.2.8 注意事项

  • 脏检查:值变化超过 1e-4 才写入,避免每帧无效写损伤性能;字符串值不同才写。
  • 节流throttleMs 只限制写入频率,不影响数据接收;高频源(websocket 毫秒级推送)建议配 100~200ms 节流。
  • 与其他驱动的冲突:同一属性被多方驱动时后写胜——帧内同对象同属性的多条绑定只保留最后一笔;跨驱动(GUI/脚本/绑定/规则)按执行顺序后者覆盖前者,没有仲裁。避免「打架」的做法:一个属性只交给一个驱动方。v7.1 序列编辑器另有优先级机制(优先级大者胜、禁用序列恢复基线值),与数据绑定、脚本三方共存。
  • 归属显示:冲突排查一律先看「驱动归属」(20.2.6),谁最后写入就显示谁。
  • expr 的 x 恒为数值:表达式里 x 已做 +x 数值化,字符串状态请先数值化再映射;表达式返回字符串(如颜色、标签文本)是允许的。
  • 导入是替换式databind.import 会清空现有绑定与规则后整体替换(danger 级操作),导入前建议先「导出」备份。
  • 引擎默认自启动(无绑定时空转开销≈一次 rAF 判断);跨域接口注意 CORS,file:// 直开无法访问 http 数据源,请用本地静态服务调试。

20.3 组合实战:智能工厂 AGV 监控场景(四层协作)

场景:一台 AGV 在车间巡查,位置由 MES 经 WebSocket 实时推送;电量由 playback 模拟下降;电量低于 20% 时车体变红闪烁、POI 标签告警、父页面大屏一键聚焦——数据绑定管数据、规则管阈值、脚本管行为、API 管集成,四层各司其职:

载体职责
① 数据接入📡 数据页签 · 绑定 5 条WebSocket 驱动位置 X/Z 与朝向;playback 电量 → 状态灯亮度 + 标签文字
② 阈值守卫📡 数据页签 · 规则 1 条电量 ≤20% 边沿触发:AGV 变红 + 广播 binding.rule.triggered / alarm.battery
③ 行为增强📜 脚本页签 · 脚本 2 个「告警闪烁」响应规则事件闪烁 3 秒;「云台跟随」让巡检相机支架贴身跟随 AGV
④ 外部集成第 19 章 API / SDK父页面大屏查询状态、告警时聚焦镜头、图表联动高亮

第 ①② 层:绑定与规则(可整包导入,或「导出」按钮生成同构 JSON)

{
  "version": 1,
  "kind": "cimpro.databind",
  "bindings": [
    { "name": "AGV-01 位置X", "source": { "type": "websocket", "url": "ws://192.168.1.60:9001" },
      "path": "$.agv.pose.x", "target": { "object": "AGV-01", "property": "transform.position.x" } },
    { "name": "AGV-01 位置Z", "source": { "type": "websocket", "url": "ws://192.168.1.60:9001" },
      "path": "$.agv.pose.z", "target": { "object": "AGV-01", "property": "transform.position.z" } },
    { "name": "AGV-01 朝向", "source": { "type": "websocket", "url": "ws://192.168.1.60:9001" },
      "path": "$.agv.heading", "transform": { "expr": "x * Math.PI / 180" },
      "target": { "object": "AGV-01", "property": "transform.rotation.y" } },
    { "name": "AGV-01 电量→状态灯", "source": { "type": "simulator", "mode": "playback",
      "values": [95, 85, 70, 55, 40, 25, 18, 12], "intervalMs": 1000, "loop": true },
      "path": "$.value", "transform": { "map": [0, 100, 0.15, 2.0] },
      "target": { "object": "AGV-01状态灯", "property": "material.emissiveIntensity" } },
    { "name": "AGV-01 电量标签", "source": { "type": "simulator", "mode": "playback",
      "values": [95, 85, 70, 55, 40, 25, 18, 12], "intervalMs": 1000, "loop": true },
      "path": "$.value", "transform": { "expr": "'电量 ' + Math.round(x) + '%'" },
      "target": { "object": "lbl_agv01", "property": "label.text" } }
  ],
  "rules": [
    { "name": "电量过低告警",
      "when": { "object": "AGV-01状态灯", "path": "material.emissiveIntensity", "op": "<=", "value": 0.51 },
      "actions": [
        { "type": "prop", "target": "AGV-01", "property": "material.color", "val": "#e5484d" },
        { "type": "event", "name": "alarm.battery", "payload": { "level": "low" } }
      ] }
  ]
}

第 ③ 层:两个脚本

脚本 A「告警闪烁」:宿主 = AGV-01,代码直接用 20.1.6 实例 6(监听 binding.rule.triggered,闪烁 3 秒)。

脚本 B「云台跟随」:宿主 = 巡检云台(实例 4 的带偏移变体,保持 2 米跟随距离):

// 巡检云台跟随 AGV-01(保持 2 米偏移)
var TARGET = 'AGV-01';
var OFFSET_X = 2.0, OFFSET_Z = 2.0;
function onUpdate(ctx){
  const agv = ctx.find(TARGET);
  if(!agv){ return; }
  ctx.set('transform.position.x', agv.get('transform.position.x') + OFFSET_X);
  ctx.set('transform.position.z', agv.get('transform.position.z') + OFFSET_Z);
}

第 ④ 层:父页面 API 联动(孪大师 UI 图表编辑器 / 任意前端)

// 第 19 章 bridge(iframe 模式)或 v7.2 SDK(direct 模式)均可
const st = await bridge.call('getObject', 'AGV-01');   // 查询 AGV 位姿/状态
await bridge.call('focus', 'AGV-01', 1.0);             // 告警时一键飞镜头
bridge.on('select', ({ name }) => console.log('选中:', name));
// SDK direct 模式「万能驱动口」一行驱动任意属性(与绑定/脚本同源):
sdk.setData('AGV-01', { color: alarm ? '#e5484d' : '#34c98e' });
运行效果:AGV 沿真实路线平滑行驶、电量标签逐秒刷新;降到 18% 时车体变红并闪烁 3 秒、巡检云台全程贴身跟随、大屏点击「告警」即飞镜头聚焦——数据绑定、规则、脚本、API 四层互不打架:位置归 binding,闪烁与跟随归 script,颜色告警归 rule,各自属性不重叠,归属面板随时可查。

21. ⚡ 交互系统详细教程(事件→条件→动作)

交互系统在右侧面板的「⚡ 交互」页签(位于「属性」与「步骤」之间,v7.7 起为独立面板)。它让你零代码地回答一个问题:「当某件事发生时,如果满足某个条件,就依次执行这些动作」。本章从概念讲到三个手把手实例,再到与脚本/数据/API 的联动,最后是最佳实践。

21.1 核心概念:事件 → 条件 → 动作链

一条交互规则(简称「规则」)由三段组成,就像一句话:

段落回答的问题说明
事件源什么时候触发?谁(触发对象:构件名 / 标签 / * 全部 / scene 场景级)在什么情况下(单击 / 双击 / 鼠标移入 / 移出 / 属性变化 / 显隐切换 / 标签告警 / 自定义事件)。
条件(可选)要不要执行?不满足则整条规则跳过。形如「某对象的某属性 操作符 某值」,操作符:== != > >= < <= contains
动作链做什么按顺序依次执行的动作,可多步。动作类型:设置属性 / 调用能力(170+ API 皆可为动作)/ 发送事件 / 延时等待 / 提示消息 / 打开链接。
💡 例:「当「顶盖」被单击(事件),且蜗壳颜色仍是原色(条件),就把蜗壳变红、弹出提示(动作链)」——这就是一条完整规则。

21.2 面板总览与卡片化规则

打开右侧「⚡ 交互」页签,面板分为四个区域:

  1. 顶栏:标题 +「+ 新建规则」按钮(打开分步向导);
  2. 当前目标行:显示当前选中的对象(如「当前目标:顶盖(构件)」),右侧有 「当前目标 / 全部规则」切换——「当前目标」只看与选中对象相关的规则(含 * 通配),「全部规则」看整个工程;
  3. 规则卡片列表:每条规则一张卡片,折叠态只有两行——第一行:状态色点(绿=启用 / 灰=停用)+ 规则名 + 「动作 ×N」徽标 + 启停开关 + 展开箭头;第二行:触发摘要(目标 · 事件 · 条件)+ 试运行 ▶ + 删除 🗑;
  4. 空态引导:还没有规则时显示「还没有交互规则,点击『新建规则』让场景活起来 ✨」。
📌 点卡片名或右侧 ⌄ 可展开卡片,查看条件与动作链明细,并可「✏️ 编辑(重新走向导)」「▶ 试运行(忽略事件/条件直接执行动作链,用来调试)」「🗑 删除」。启停开关停用的规则保留配置但不触发。

21.3 分步向导:三步创建一条规则

点「+ 新建规则」进入向导,每屏只回答一个问题,不再是一整屏表单:

步骤做什么
① 事件源填触发对象(选中对象已自动填入,也可改成 *scene),再从事件图标宫格(单击/双击/移入/移出/属性变化/显隐/告警/自定义)中点选一种。选「属性变化」可填监听的属性路径(如 material.color,留空=全部);选「自定义事件」填事件名。
② 条件可跳过。大多数场景直接「下一步」。需要时勾选「启用条件判断」,填 条件对象 / 属性路径 / 操作符 / 值。
③ 动作配置动作链:每步一张动作卡(类型下拉 + 参数),支持 ↑↓ 调序、✕ 删除、「+ 添加动作」。常用类型参数:设置属性=目标+属性路径+值;调用能力=能力名+参数JSON;延时等待=毫秒。
④ 完成给规则起名(如「点顶盖→蜗壳变红」),核对摘要(触发/条件/动作数),点「✅ 创建规则」。

21.4 手把手实例一:点击构件变告警色 + 弹提示

目标:学员单击「顶盖」,蜗壳变红并弹出提示(认知模式标红关键件)。

  1. 大纲选中「顶盖」→ 右侧「⚡ 交互」→「+ 新建规则」(触发对象已自动填「顶盖」);
  2. ① 事件源:事件类型点选「🖱 单击构件」→ 下一步;
  3. ② 条件:直接「下一步」跳过;
  4. ③ 动作:动作 1 选「设置属性」,目标 蜗壳、属性路径 material.color、值 #ff0000;点「+ 添加动作」,动作 2 选「提示消息」,消息填「蜗壳为过流部件,注意检修」;
  5. ④ 完成:命名「点顶盖→蜗壳变红」,创建。

切换到演示模式,点击顶盖即可看到效果。卡片上的「▶ 试运行」可在编辑态直接验证动作链。

21.5 手把手实例二:数据变化自动切相机(聚焦告警设备)

目标:某构件属性被数据/脚本改变时(如温度超标写入 material.color),相机自动聚焦它。

  1. 「+ 新建规则」→ ① 事件源:触发对象填该构件名(如 顶盖),事件选「⚙️ 属性变化」,监听属性填 material.color
  2. ② 条件:启用条件,条件对象 顶盖、属性 material.color、操作符 ==、值 #ff0000(只有变红才聚焦,变其他色不理会);
  3. ③ 动作:动作 1 选「调用能力」,能力 camera.focus,参数JSON {"target":"顶盖","duration":1.2};动作 2 选「提示消息」「设备告警,已自动聚焦」;
  4. ④ 完成:命名「告警变色→自动聚焦」,创建。

之后无论是数据绑定、脚本还是 API 把该构件改红,相机都会飞过去——属性变化事件天然贯通四层驱动(GUI / 绑定 / 脚本 / API)。

21.6 手把手实例三:hover 高亮 + 显示信息标签

目标:鼠标移入「主轴」时高亮并在标签里显示参数,移出时还原。

  1. 规则 A「移入主轴→高亮+标签」:① 触发对象 主轴、事件「➡️ 鼠标移入」;② 无条件;③ 动作 1 调用能力 object.highlight,参数 {"target":"主轴","color":"#f5a524"},动作 2 调用能力 label.popup(或设置属性控制预制标签 visible=true);
  2. 规则 B「移出主轴→还原」:事件「⬅️ 鼠标移出」,动作把标签 visible=false 并再次调用 object.highlight 取消(或设置属性还原颜色)。
💡 性能说明:hover 检测是按需启用的——工程里没有任何 hover 类规则时,视口不做额外的射线检测,零开销;有 hover 规则时自动以 200ms 节流检测。

21.7 与脚本 / 数据 / API 联动(interact.trigger 外部驱动)

「🔌 自定义事件」让交互规则可以被外部系统驱动:脚本的 ctx.emit、数据绑定规则、SDK/MCP/父页面 API 都能触发。

// 1) 创建一条 custom 规则(面板里事件类型选「自定义事件」,事件名 door.opened)
//    动作链:设属性 → 发事件 → 提示

// 2) 脚本驱动(脚本内任意位置)
function onInit(ctx){ ctx.emit("door.opened", { speed: 2 }); }

// 3) API 驱动(控制台 / SDK / MCP / 父页面)
await sdk.call('interact.trigger', { name: 'door.opened', payload: { speed: 2 } });
// → 匹配事件名的全部规则依次执行整条动作链,返回 { fired: N }

// 4) 规则动作里也可「发送事件」转发载荷,外部系统可订阅:
//    CIMPro3D 事件总线 on('door.anim.start', payload => ...)
联动入口写法典型场景
脚本ctx.emit('事件名', 载荷)游戏逻辑/状态机推进到某阶段时触发一组交互
数据绑定绑定驱动属性变化 → 属性变化事件温度超标自动变红+聚焦(21.5 实例)
API/MCPinteract.trigger {name}大屏按钮、外部系统一条指令驱动整条动作链
事件总线emit 同名事件任意模块间解耦联动

21.8 API 速查(interact.* 共 9 项能力)

能力说明
interact.create创建规则 {rule:{name,source,condition?,actions}}(或平铺传参)→ {id,name}
interact.list列出规则({target?} 按对象过滤)
interact.update / delete / enable更新 / 删除 / 启停一条规则
interact.trigger外部驱动:触发自定义事件 {name,payload?,target?}{fired}
interact.run试运行一条规则的动作链(忽略事件/条件)
interact.clear清空全部规则(可撤销)
interact.describe自描述:事件/动作/条件操作符枚举(代码生成用)

规则随工程保存(interactRules 节点),创建/删除可撤销重做。

21.9 最佳实践

  • 命名讲清楚因果:「点顶盖→蜗壳变红」优于「交互1」;卡片折叠态靠名字快速定位;
  • 动作链宜短:3 步以内最好;复杂逻辑交给脚本,用 interact.triggerctx.emit 触发一组规则;
  • 条件只做开关:条件适合「状态门槛」(如原色才变色);需要 if/else 分支时建两条互补规则(满足 A 变红 / 否则变绿);
  • 善用通配与场景级:触发对象 * 对全部构件生效(如「点任何构件→显示名称标签」);scene 适合自定义事件入口规则;
  • 调试顺序:先「▶ 试运行」验证动作链本身,再验证事件触发(演示模式点击),最后核对条件;
  • 与 20 章四层协作:位置归 binding、行为逻辑归 script、用户点击响应归 interact——同一属性别让多层同时写。

22. 🧩 蓝图编排(节点式可视化逻辑)

面向:需要在更复杂逻辑下编排交互的课件作者(无需编程基础)。如果第 21 章的「事件→条件→动作」规则是表单式配置,蓝图则是节点拖拽连线式编排——适合多步骤链式动作、带分支判断、跨二维/三维/数据源联动的场景。两套系统可并存使用。

22.1 蓝图与交互系统的关系(怎么选)

维度⚡ 交互系统(第 21 章)🧩 蓝图编排(本章)
形态表单卡片(下拉+输入框选事件和动作)节点画布(拖节点、拉连线,逻辑看得见)
适合单条规则、3 步以内的动作链多步骤链式流程、if/else 分支、数据驱动告警
数据能力条件门槛(属性比较)变量 / 四则运算 / 区间映射 / HTTP 轮询 / WebSocket 订阅
二维联动comm 事件动作原生节点(二维界面事件 ↔ 通知二维面板)
学习成本5 分钟30 分钟(本节教程带你走完第一条)

22.2 打开蓝图工作区

两个入口任选:

  • 顶栏按钮:点击顶部工具栏的 🧩 蓝图 按钮(撤销/重做按钮右侧);
  • 交互面板升级入口:第 21 章交互面板顶部有「🧩 打开蓝图 →」按钮,一键跳转。

工作区是可拖拽浮动窗口(六大铁律 #2):标题栏按住拖动位置、 最大化/还原、Esc 关闭。标题栏右侧有 ▶ 运行 / ■ 停止 按钮随时试跑。

窗口内嵌的就是蓝图编辑器本体——与 SDK 独立分发版(sdk/blueprint/blueprint-editor.html同一个文件:在 DPE 内打开时自动连接真实场景;单独打开时内置模拟面板演示。

22.3 五步做出第一条蓝图

以「点击蜗壳 → 相机飞过去 → 弹提示」为例:

  1. 放事件节点:左侧节点库「事件」分类找到 物体单击,拖到画布(或右键画布搜索「单击」);
  2. 放动作节点:同样方式拖出 相机飞行标签提示 两个动作节点;
  3. 连线:从「物体单击」右侧白色箭头(执行流端口)拖到「相机飞行」左侧箭头,再连到「标签提示」——箭头决定先做什么后做什么
  4. 填参数:点选节点,右侧属性面板选目标构件(下拉里就是当前场景的真实构件名)、填时长与提示文字;
  5. 运行:点标题栏 ▶ 运行,切到演示模式点击该构件——节点闪绿、连线流光,动作真实生效。

💡 白色箭头 = 执行流(顺序),彩色圆点 = 数据流(把算出来的值喂给别的节点,如「随机数」喂给「延时」的秒数)。参数没连线时用面板里填的默认值,连了线则以连线取值优先。

22.4 五类节点速览(44 种)

分类作用代表节点
🔴 事件逻辑的起点(什么时候触发)物体单击/双击/划入划出、二维界面事件、数据到达、阈值越限、定时器、场景就绪、自定义事件
🔵 动作让场景发生改变(做什么)显隐/聚焦/发光/状态/材质、相机飞行、序列播放/暂停/停止、动画片段、标签提示、语音播报、通知二维、爆炸图
🟡 逻辑控制流转(怎么走)条件分支、顺序执行、延时、防抖、仅一次、门控、计数器
🟢 数据接入外部数据(数字孪生)变量读取、区间映射、JSON 取值、HTTP 轮询、WebSocket 订阅
🟣 运算数值加工四则运算、随机数、常量、格式化

进阶:右上角可切换代码视图(DSL),蓝图 ⇄ 代码双向无损转化;自由代码折叠保留。AI 助手面板可按自然语言意图生成蓝图(应用前有 diff 预览)。

22.5 真实场景联动与模式门控(重要)

  • 自动注入真实场景:工作区打开时,当前工程的全部构件、材质预设、动画序列自动进入蓝图下拉——选到的就是真实对象;动作执行直接驱动真实场景(显隐/飞行/材质全部真实生效)。
  • 编辑模式不触发:编辑模式下视口点击 = 选中对象(不打断制作),蓝图事件链不会触发(标题栏有 ⚠ 提示徽标)。要体验蓝图交互,切到演示 / 培训 / 考核 / 播放 / 预览模式后再点击。
  • 调试通道不受限:工作区 ▶ 运行按钮、面板按钮、API 显式调用(blueprint.run)任何时候都可用——那是制作者的调试通道。

22.6 保存:蓝图随工程落盘

画布上每次增删节点/连线/改参数,蓝图 JSON 自动写回当前工程——「保存 / 另存为」时随 vtpack 一起落盘,重开工程完整还原。也可用「导入/导出」在工程间迁移蓝图(.json 文件)。

22.7 API 速查(blueprint.* 共 6 项能力)

能力说明
blueprint.open打开/关闭工作区 {visible?}{open}
blueprint.getState查询状态:节点/连线数、运行态、连接态
blueprint.import导入蓝图 JSON {blueprint}(spec: dpe-blueprint/1.0)
blueprint.export导出当前蓝图 JSON
blueprint.run / stop运行 / 停止(AI 与外部系统可驱动)
// AI 助手 / MCP / 父页面 一句话驱动:
await sdk.call('blueprint.open', {});
await sdk.call('blueprint.run', {});
// 二维大屏联动:comm.emit('open-panel') 触发蓝图里的二维界面事件节点

全部能力已注册 registry(MCP 自动透传),蓝图 JSON 协议与 SDK 独立版完全一致,详见 sdk/blueprint/README.md

23. 🚀 部署与运维

面向:企业 IT / 运维人员(把编辑器与播放器部署到服务器)与前端开发者(SDK / API / MCP 集成快速上手)。DPE 是纯前端静态系统——没有后端编译步骤,任何静态服务器指向源码目录即可运行。

21.1 环境要求

21.1.1 三类角色的配置基线

角色配置要求
终端用户(浏览器) 浏览器 Chrome / Edge 90+(必须支持 WebGL2,不支持 IE);显卡推荐独立显卡或 Apple M 系列(集成显卡可运行,v7.5 自适应画质会自动降档自救);内存 8G 起大模型场景(100MB+ STP / 105MB 坦克模型)建议 16G。整机三角面建议 ≤ 100 万(详见 12 章渲染与性能)。
本地开发 / 演示 任何静态服务器均可,零依赖零构建。官方用法:python3 -m http.server 8960(测试脚本均按 8960 端口编写);也可用 npx serve、nginx 等。不能 file:// 双击打开(浏览器对 ES Module 有跨域限制,见 21.4 FAQ·Q1)。
生产部署服务器 最低 2核4G(纯静态托管,nginx 即可,CPU/内存几乎无压力);推荐 4核8G+(并发培训场景);同时托管 MCP 网关(Node)或视频转码网关(MediaMTX,rtsp→HLS)时建议 8核16G带宽是主要瓶颈:资源包(assets/ 模型库)约 144MB——首次加载全量拉取,之后靠长缓存走增量;按 50 人同时开班、首载分散在 10 分钟估算,出口带宽建议 ≥ 100Mbps(或挂 CDN / 对象存储分流)。

21.1.2 私有化部署(内网 / 离线)

内网环境开箱即用:三维渲染等全部运行库已本地化在 vendor/,无任何公网 CDN 依赖。交付采用「三包分离」架构,由 build_packages.sh 一键构建:

交付包内容更新频率
DPE_源码包.zip代码本体(index/player/手册/modules/sdk/docs/tests,小体积)高频(每次发版)
DPE_资源包.zip大静态资源 assets/(模型库 lib/ 约 150MB,含 RESOURCES.md 清单)低频(模型库扩充时)
DPE_SDK包.zip集成方 SDK(sdk/ + docs/sdk.md + docs/platform.md + 示例)随源码包
  1. 解压源码包资源包同一目录(资源包内 assets/ 与源码包占位目录自动合并,路径引用不变);
  2. 静态服务器指向该目录(内网 nginx / IIS 均可,见 21.2);
  3. 验证:打开 index.html 标题正确、模块加载无报错、curl http://服务器/assets/lib/ToyCar.glb 返回 200;
  4. 交付清单(md5 / sha256 / 大小)随包自动生成,校验无误即完成。
需要重新出包时执行 bash build_packages.sh,产出与校验清单输出到 ~/Desktop/DPE课件输出/,可重复执行。

21.2 部署方式(三选一)

21.2.1 方式一:nginx 静态托管(推荐)

完整生产配置示例——含 gzip 压缩、glb/wasm MIME 类型、缓存策略(index.html 不缓存 + 静态资源长缓存)与 SPA 404 兜底:

server {
    listen 80;
    server_name your-domain.com;            # 或 _ (IP 直访)
    root /opt/dpe-editor;                # 源码包+资源包合并目录
    index index.html;
    charset utf-8;                          # 中文文件名防乱码

    gzip on;
    gzip_types text/html text/css application/javascript application/json model/gltf-binary application/wasm;
    gzip_comp_level 6;

    # ① 大模型/二进制:正确 MIME + 断点续传(Range)+ 1 天缓存
    location ~* \.(glb|gltf|bin|wasm|vtpack)$ {
        types { }
        default_type application/octet-stream;
        # glb 也可显式声明 model/gltf-binary;wasm 必须是 application/wasm
        add_header Accept-Ranges bytes;
        add_header Cache-Control 'public, max-age=86400';
    }

    # ② 指纹类静态资源:一周长缓存(升级靠 ?v= 破除,见 21.3)
    location ~* \.(js|css|png|jpg|webp|hdr|mp4)$ {
        add_header Cache-Control 'public, max-age=604800';
    }

    # ③ 入口页与 manifest:不缓存,保证发版即时生效
    location = /index.html  { add_header Cache-Control 'no-cache'; }
    location = /player.html { add_header Cache-Control 'no-cache'; }
    location = /manifest.json { add_header Cache-Control 'no-cache'; }

    # ④ SPA 兜底:刷新子路径不 404
    location / { try_files $uri $uri/ /index.html; }
}
三个高频踩坑:wasm(manifold 剖切引擎)MIME 错会导致「Failed to compile」;index.html 必须不缓存,否则发版后用户拿到旧入口引用已删除的旧资源;中文文件名乱码加 charset utf-8;

21.2.2 方式二:Docker(docker-compose)

# docker-compose.yml —— nginx 静态托管 + 可选视频网关 + 可选 MCP 网关
services:
  web:                                  # ① 编辑器/播放器静态托管(必选)
    image: nginx:alpine
    ports: ["80:80"]
    volumes:
      - ./dpe-editor:/usr/share/nginx/html:ro   # 三包合并目录
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    restart: unless-stopped

  mediamtx:                             # ② 视频转码网关(可选:rtsp→HLS/WebRTC)
    image: bluenviron/mediamtx:latest
    ports: ["8888:8888", "8554:8554"]   # 8888=HLS  8554=rtsp 入流
    restart: unless-stopped
    # 用法:摄像头 rtsp 推到 8554 流,相机属性里填 http://网关IP:8888/xxx/index.m3u8

  mcp-gateway:                          # ③ MCP 网关(可选:大模型智能体接入)
    image: node:22-alpine
    working_dir: /app
    command: sh -c "npm install && node server.js"
    volumes: ["./modules/mcp-gateway:/app"]
    ports: ["8970:8970", "8971:8971"]   # 8970=MCP HTTP  8971=编辑器 WS
    restart: unless-stopped
# 启动:docker compose up -d
# 仅纯静态托管时,删掉 mediamtx / mcp-gateway 两个服务即可(服务器 2核4G 足够)

21.2.3 方式三:腾讯云 / 任意云主机(deploy_tencent.sh)

仓库自带一键部署脚本 deploy_tencent.sh(rsync 增量同步 + 版本原子切换 + 自动回滚):

  1. 编辑脚本顶部【连接配置】:服务器 IP、SSH 端口/用户(建议先 ssh-copy-id 配免密);
  2. ./deploy_tencent.sh —— 首次自动创建目录、rsync 增量上传(只传变化文件,后续更新秒级完成)、自动写入 nginx 站点配置并 reload;
  3. 部署为 releases → current 原子切换,上一版自动保留;出问题执行 ./deploy_tencent.sh rollback 一键回滚。

访问入口:http://服务器IP/(编辑器)与 http://服务器IP/player.html(播放器)。也可整体上传腾讯云 COS 开启静态网站托管(方式三变体)。

21.2.4 上线检查单(公网必读)

公网上线前逐项确认(源自 docs/platform.md §6,内网私有化可跳过):
检查项说明
AUTH_STRICT 开关modules/platform/platform.jsAUTH_STRICT = true——彻底关闭 ?auth=dev 逃生门与 localhost 自动放行(开发期默认 false)。
piadmin 端点替换PIADMIN_AUTH_URL / PIADMIN_REGISTER_URL / PIADMIN_STORAGE_URL 占位值替换为真实孪大师端点(存储未配置时自动 fallback 本地 IndexedDB mock,2G 配额)。
manifest 重建每次发版前用 modules/platform/manifest-builder.js 重新生成 manifest.json 并随包部署(对接方靠它自动反射 API 面板)。
HTTPS建议全站 HTTPS(课件资产安全 + 部分浏览器能力要求安全上下文)。
门控埋点可选:订阅 platform.gate 事件统计未授权访问量。

21.3 升级维护

21.3.1 版本号与缓存破除

入口页对 JS/CSS 引用统一带 ?v=版本号 参数(如 ?v=7.5,当前共 10 处)。发版时只需更新版本号参数,浏览器即视为新 URL 强制拉取——配合 21.2.1 的「入口不缓存 + 静态长缓存」策略,用户零感知升级、老版本资源对已开学员仍可用。

21.3.2 三包增量更新

  • 源码包(高频):每次发版只替换源码包内容即可,解压覆盖 current 目录(或重跑 ./deploy_tencent.sh,rsync 只传差异文件);
  • 资源包(低频):仅模型库扩充时更新——合并解压到同一目录,长缓存一周内新旧课件均不受影响;
  • SDK 包:随源码包同版本交付给集成方,接口只增不删(能力 manifest since 标记 + manifestDiff 差集可查新增)。

21.4 开发者上手(SDK / API / MCP 快速通道)

21.4.1 五分钟集成(DPE SDK)

v7.2 起 SDK 双模式:direct 直嵌(容器内直接渲染,API 直调零序列化,高频调用比 iframe 快 15~27 倍)+ iframe 兼容(跨域 / 完整编辑器能力),auto 模式自动协商。完整文档见 docs/sdk.md,360 项能力参数表见 api-reference.html

<div id="viewer"></div>
<script src="/sdk/cimpro3d-sdk.js"></script>
<script>
  // 一个容器 + 一行初始化(不传 project 时加载内置示例课件)
  const viewer = await CIMPro3D.create('viewer', { /* project: { vtpack: '/xx.vtpack' } */ });
  viewer.explode.set(1);                        // 💥 爆炸图
  viewer.steps.play({ speed: 1.5 });            // ▶ 播放课件
  viewer.on('step.change', ev => console.log(ev.partName));  // 事件订阅
  // 跨域/需要完整编辑器:mode:'iframe' + src:'https://editor-host/?api=2',其余代码一字不改
</script>

UMD / ESM 双格式 + TypeScript 类型定义(sdk/cimpro3d-sdk.d.ts),SDK 仅 6KB(gzip) 且自带隔离三维运行时不污染宿主;可运行示例:sdk/demo.html(direct)/ sdk/demo-iframe.html(iframe)/ sdk/test-host.html(最简骨架)。iframe 嵌入基础 API(cimpro3d-api.js 桥)见第 19 章。

21.4.2 DPE API 示例中心(api-playground.html)

不想读文档?打开 api-playground.html 交互式把玩全部 360 项能力(37 域分组):

  • 浏览能力:按域折叠分组 + 关键字搜索,含参数 schema / 版本 / since 标记;
  • 自动表单:每个能力按 inputSchema 自动生成参数表单(枚举变下拉、必填标红),不用手拼 JSON;
  • 一键运行:点运行即在下方法入三维场景实时看效果,结果 JSON 直接可复制;
  • 事件日志:右侧滚动日志实时打印 prop.changed / step.change 等全部事件,调试联动的利器;
  • 示例脚本:10 个一键示例(爆炸图巡检、相机飞行、标签批量创建等)开箱即改。

21.4.3 MCP 接入(大模型智能体)

把编辑器全部能力开放给 WorkBuddy / Claude / DeepSeek 等大模型智能体,走「网关透传」架构(完整部署文档 docs/mcp.md):

# ① 启动网关(Node ≥ 18)
cd modules/mcp-gateway && npm install && node server.js   # HTTP 8970 / WS 8971

# ② 浏览器打开编辑器即自动连网关(右上角圆点:绿=已连)
http://your-host:8960/?mcp=ws://your-host:8971

# ③ 验证
curl http://your-host:8970/health      # {"ok":true,"sessions":1,"tools":170,...}

网关是纯透传层:tools/list 动态汇总各编辑器会话上报的能力清单(inputSchema 原样透传),编辑器侧新增能力网关零改动生效;生产建议 nohup / systemd / pm2 托管。Docker 方式见 21.2.2。

21.4.4 常见部署问题 FAQ

Q1:本地双击 index.html 打不开 / 控制台报跨域错误?

不能 file:// 打开——浏览器禁止 ES Module 跨 file 协议加载。起一个静态服务器:python3 -m http.server 8960 后访问 http://localhost:8960。若宿主页跨域 iframe 集成,确保编辑器侧输出 Access-Control-Allow-Origin(nginx 加 add_header 或同域反代),并允许 embedding(默认未设 X-Frame-Options 限制)。

Q2:HTTPS 页面里视频融合 / 数据源不生效,控制台报 Mixed Content?

HTTPS 页面禁止加载 http:// 的视频流(m3u8/mp4)与 WebSocket 数据源——这是浏览器安全策略。解决:① 视频流走 MediaMTX 网关并配 HTTPS(或 wss/https 反代);② 数据绑定源(HTTP/WebSocket/MQTT)全部升级为 https/wss;③ 临时演示可整站退回 HTTP(不推荐)。

Q3:播放器里视频不自动播放?

浏览器自动播放策略:带声音的视频必须由用户手势触发。DPE 播放器演示/培训模式的「开始播放」按钮即手势入口;自定义集成时给 video 加 mutedplaysinline 属性即可静音自动播放,或经 SDK 用 video.play 能力在用户点击后调用。

Q4:iframe 嵌入后功能异常(截图/全屏/剪贴板不可用)?

检查宿主页 iframe 标签的沙箱与权限声明,建议:<iframe src="...?api=2" allow="fullscreen; clipboard-write; autoplay" allowfullscreen>;不要设置多余 sandbox 属性(会禁掉脚本/同源)。跨域时用第 19 章 postMessage 桥或 SDK iframe 模式通信,不要直接访问 iframe 的 window。

Q5:部署后模型加载 404 / wasm 报错?

① 404:资源包未解压合并(assets/lib/ 下应有 ToyCar.glb 等模型,curl 验证返回 200);② wasm 编译失败:MIME 必须是 application/wasm(见 21.2.1 配置①);③ 刷新子路径 404:加 SPA 兜底 try_files $uri $uri/ /index.html;

📝 更新记录(统一入口)

本手册为唯一文档入口:操作指南 + API 文档(见 🔌 DPE API)+ 更新记录。

v7.9.65(2026-08-30)🧩 蓝图编排系统 v0.1(DPE 编辑器深度集成)① 🧩 蓝图进主编辑器——顶栏新增「🧩 蓝图」按钮 + 交互面板「打开蓝图」升级入口;可拖拽浮动工作区(标题栏拖动/⤢最大化/Esc 关闭)内嵌节点式蓝图编辑器,操作真实场景(非模拟);② 双向宿主桥——真实构件/材质预设/动画序列自动注入蓝图下拉;蓝图动作(显隐/聚焦/材质/相机飞行/序列播放/爆炸图等 17 类)直接驱动 registry 真实执行;视口点击/双击/悬停事件 + comm 二维总线事件实时转发进蓝图;③ 交互模式门控——编辑模式视口点击=选择不触发蓝图(制作不打断,标题栏 ⚠ 徽标提示),演示/培训/考核/播放/预览模式才转发;④ 蓝图随工程落盘——画布每次变更自动写回工程状态,保存 vtpack 完整往返;⑤ 全量 API——blueprint.open/getState/import/export/run/stop 六能力注册 registry(MCP 自动透传,AI 可一句话打开并运行蓝图);⑥ SDK 同源——编辑器内嵌与独立分发(sdk/blueprint/blueprint-editor.html)同一文件,iframe/postMessage 协议(bp.hostContext/bp.action/bp.event/bp.export)对外固化;独立版内置模拟面板照常可用。测试:DPE 集成 20 项(含真实构件显隐翻转闭环断言、编辑模式门控断言、五模式回归)+ 蓝图编辑器 39 项 + 线上 9 项 + 全量回归 207 项全绿;能力 446→452。手册新增第 22 章蓝图编排教程。
v7.9.66(2026-08-31)💾 保存/另存/发布 vtpack 全空修复版(严重):修复用户路径「新建场景 → 导入模型 → 修改材质 → 拖入模型库模型 → 保存/另存/发布 vtpack → 重开什么都没有」。三层根因全部修复:① 模型库置入不入包——内置模型库拖入/「载入」此前只注册进场景、不录资源清单,vtpack 里没有模型文件;现在置入即入资源清单(与外部导入完全一致),支持撤销/重做,保存/发布完整打包。② 样机误判丢失——「是否默认样机场景」此前按「有无导入模型」判定,样机与导入模型并存时重开样机整体消失;改为样机构件打默认标记精确判定,五处恢复点(本地打开/云端载入/vtpack 解包/场景切换/预览链接)统一修复。③ SDK 多模型加载——SDK 播放器此前只加载工程包里第一个模型,多模型工程必丢;现在全量加载包内全部模型并同步重建样机(SDK 升级 v0.3.1,编辑器与 SDK 渲染结果一致)。
🧩 蓝图编排体验修复版① 节点端口贴边——端口绝对定位 CSS 此前用 left/right:-100%(参照行宽≈节点宽)导致连线起点/终点被推出整整一个节点宽、视觉上明显错位;改为 left/right:100% 端口圆点紧贴节点左右缘、标签悬外侧,连线端点改测 .dot 圆心(不再测含标签的整宽)。② DPE 真实模式画布扩容——蓝图内嵌 DPE(host.real)时自动隐藏冗余的「模拟三维/模拟二维」演示面板 + 默认收起「运行日志」,画布可用高度 +~220px,可一次看到更多节点。③ 入口 beta 徽标——DPE 顶栏「🧩 蓝图」按钮右上角加橙色 beta 标,标明功能尚在打磨期、欢迎反馈。测试:用户原始路径 11 断言 + SDK 端到端 3 断言 + 蓝图新端口几何 19 断言 + 蓝图编辑器回归 39 断言全绿。
🧩 蓝图增强版(面板自由 + 节点打组 + 三向同步)① 面板可拖拽/折叠——左侧节点面板、右侧属性面板、底部运行日志三面板均可按住标题栏拖到任意位置(带边界保护)、右上角 ▾ 折叠/展开、双击标题栏重置回默认位;位置与折叠状态自动记忆(下次打开还原)。② 节点打组/解组——选中 ≥2 个节点 ⌘G 打组(半透明虚线容器 + 标题栏 + 子节点计数),⌘⇧G 解组;组可改名/改尺寸,属性面板显示组信息;组随工程序列化完整往返。③ 聚焦/适配——Shift+F 聚焦选中节点(平移+缩放到合适视角),F 适配全部;顶栏新增 ⊞ 打组 / ⊟ 解组 / ⤢ 聚焦 按钮。④ 蓝图↔代码实时同步——代码视图(预览模式)开着时,画布任何结构变更即时重新生成等价 DSL。⑤ 场景↔蓝图双向高亮——DPE 视口选中构件,蓝图中 target 关联节点绿色脉冲高亮 2 秒;反之选中蓝图节点(单选带目标构件时)联动 DPE 场景选中(属性面板/大纲/gizmo 全联动)。测试:面板拖拽/折叠/打组/聚焦 19 断言 + 三向同步 14 断言 + 全部蓝图回归 39+19 断言全绿。
🎬 视频融合多路性能版:几十上百路视频同屏不卡顿——按活跃路数自动分档(≤8 路 30fps/1280 边 · ≤16 路 15fps · ≤48 路 8fps · >48 路 4fps;≤32 路 640 边 · >32 路 384 边),普通路轮转上传纹理(百路场景单帧上传数恒定),高优先路(挂相机 HUD/选中)恒全速,不可见路冻结纹理上传(视频继续解码、恢复即传);投影贴图改单面渲染(背面不再透出画面,类似真实投影机)。测试:真实鱼眼 12 路并发 23 断言全绿(FPS 60 / 内存 28MB)。
📦 四客户端 7.9.66 重打包:Windows / macOS(Apple 芯片) / Linux / Win7 四平台安装包全部基于 V7.9.66 重打包并上传官网下载页;macOS 首次打开提示「无法打开/已损坏」时右键打开或执行 xattr -cr 命令(下载页有图文指引)。
v7.9.35(2026-08-29)默认相机逐参数重置:属性面板 12 个参数行(FOV/位置/朝向水平·俯仰/近·远裁剪面/速度/灵敏度/加速/曝光/色温/碰撞)行尾各配独立 ↩ 重置小按钮——单项恢复默认、其它参数不动;新增 API camera.resetParam {key};能力 442→443;专项测试 69 断言全过。
v7.9.34(2026-08-29)默认相机一键重置:属性面板新增「↩ 重置参数」按钮 + API camera.resetNav——相机属性(FOV/近·远裁剪面)恢复启动初始快照、视角平滑飞回初始机位,漫游参数(速度/灵敏度/Shift 加速/曝光/色温/碰撞)恢复出厂值;能力 441→442;专项测试 62 断言全过。
v7.9.33(2026-08-29)默认相机管理补丁(确立设计原则:默认相机是观察者本身,是逻辑管理节点而非场景实体):① 🚫 视口完全不可见——代理盒透明度 0、不参与拾取、不投影阴影;② 🔍 F 键聚焦自身被拦截——选中默认相机按 F,提示「默认相机是观察者本身,不可聚焦自身」,视角不再突跳;③ 🔲 框选不可选中——框选 everything 时排除默认相机(此前包围盒中心落框会误纳入批量集合)。
v7.9.32(2026-08-29)默认相机管理版① 🎥 默认相机(场景主相机)大纲置顶——带「默认」徽标重点标注,永远排大纲第一行(引擎级每帧守卫,导入/打组不挤掉);② 🔒 不可删除——大纲行无删除/重命名/冻结/勾选按钮、不可拖拽,单删/批量删/键盘 Delete/全选四条路径全部拦截(主相机常驻防误删);③ 📷 完整相机属性面板——大纲选中默认相机,属性面板显示:FOV 视角(20°–120°,实时 35mm 等效焦距换算)/ 位置 XYZ / 朝向(水平角·俯仰角)/ 近·远裁剪面 + 漫游参数(移动速度/灵敏度/Shift 加速倍率 1–8×/曝光/色温 2000K–10000K 白平衡实时预览/碰撞检测);④ 🌡 色温真实生效——Kelvin→RGB 白平衡叠加层(6500K 中性,暖橙/冷蓝实时预览);⑤ 🔌 API——camera.setNavParam 扩展位姿(px/py/pz/yaw/pitch)与投影(near/far)参数(orbit 模式下自动同步环绕目标点,朝向不被拉回),新增 camera.getPose(位姿/FOV/等效焦距查询);48 项专项测试 + 54 文件全量回归零回退。
v7.9.24(2026-08-27)复制旋转修复版① 🔄 修复「复制出的物体旋转变形/有缩放」(严重)——根因:regClone 注册 clone 根后仍递归子树,深层 Mesh 被二次注册为新构件(大纲/选中拿到的是无旋转的深层 mesh,真实 clone 根还挂着原件旋转+非均匀缩放 → 旋转副本时父级变换叠加 = 剪切变形);修复后整棵子树单次注册。② 📐 撤销/重做旋转精度——全部 10 处旋转序列化(快照/克隆/挂靠层级/captureTRS)补 Euler order(YXZ 等非默认序不再错乱,旧 3 元组数据兼容)。
v7.9.20(2026-08-27)本地视频与 Win7 发布版① 📁 本地视频文件——视频融合面板新增「📁 本地文件」按钮(mp4/webm/mov/m4v/avi 等常见格式,blob URL 直读,2GB 限制,离线可用不依赖网络);② 🖥 Win7 兼容版——官网下载中心新增 Windows 7 客户端卡片(Electron 22.3.27 末版兼容内核,针对涉密单位/科研院所 Win7 系统);③ 📖 实测——用户提供的 2048×1536 鱼眼视频.mp4(HEVC)实测:box 房间 + pano 投影,三视角截图确认四面墙+地面无缝覆盖、效果清晰(HEVC → H.264 标准 mp4 转码后浏览器直读);④ 📋 待办——监控私有格式(IMKH/DAV/PS 等)浏览器原生无法解码,前端提示用官方播放器导出或等待 P3 MediaMTX 网关转码;FFmpeg 工具链(45MB)已部署 /tmp/ffbin/ffmpeg 可复用。
v7.9.19(2026-08-27)全向投影版(鱼眼/全景视频→三维模型)① 🌐 全向投影——视频融合新增渲染模式「全向投影」:超级鱼眼(180°–360°,如屋顶 270° 鱼眼监控)与全景相机视频直接投射到三维模型表面(四面墙+地面自动覆盖);支持四种鱼眼投影模型(等距/等立体角/立体测绘/正交)+ latlong 等距圆柱全景格式;② 🎯 投影机级调节——光轴三轴矫正(yaw/pitch/roll)、鱼眼圆心偏移、画面缩放(zoom 裁切)、角度裁切窗口(只投某面墙/地面,边缘羽化);③ 📖 实施方案文档——docs/pano-projection-plan.md(原理推导+架构设计+产品原型+验证结论);④ 🔌 API——video.setPano 全参数开放(AI 可执行"把监控画面投到房间模型上")。
v7.9.18(2026-08-27)多模型矩阵与图生 3D 版① 🤖 国内主流大模型矩阵——AI 助手新增 智谱 GLM(glm-4.6/4.6v)、Kimi 月之暗面(kimi-k3/k2.6)、阿里通义千问 Qwen(qwen-max/vl)三大供应商预设(模型下拉+Key 申请直达链接;四家端点实测:DeepSeek 真实回复 200,GLM/Kimi/Qwen 端点格式验证通过)。② 🖼 图片输入(视觉识别)——聊天输入框新增 📎 附件(可多选/粘贴/拖拽,最多 4 张),配合视觉模型(GLM-4.6V/Kimi-K3/Qwen-VL)识别图片内容;非视觉模型附图时给出明确切换指引;ai.chat 能力新增 images 参数。③ 🏗 图生 3D——AI 面板新增「🖼 图生3D」工作台(上传/拖拽/粘贴图片 + 补充描述 → 混元生3D → 自动入资源库拖入场景;UI 参考 Meshy/Tripo 工作流范式);ai.generate3D 新增 image 参数(文生3D/图生3D 双路径)。
v7.9.17(2026-08-27)场景作用域框架版① 🔀 修复"新建场景关卡带入上一场景物体"(严重)——拓扑连线/飞线/水体等模块物体此前不随关卡清场(新关卡 data=null 不走反序列化清理);现在切换/新建关卡时七类模块物体(拓扑连线/飞线曲线/水体/热力图/脚本/交互规则/手绘模型)全部清空,关卡间完全平行独立,切回完整恢复(实测 7 类物体清零+恢复全过)。② 🏗 场景作用域框架(Scene Scope)——新增物体类型统一规范五件套(docs/object-type-checklist.md):场景清理钩子 __registerSceneScope / 序列化钩子 __serProject / 大纲行+批量勾选 / #ID 徽标 / 唯一命名——今后新增任何类型物体不再脱离系统。
v7.9.16(2026-08-27)云端工程与发光材质修复版① ☁️ 修复"保存的工程打开还是预设场景"(严重)——三层根因:云端记录身份只存 sessionStorage(孪大师刷新/重建 iframe 即丢→保存误建新记录、打开拿旧记录);项目列表接口返回分页结构时解析失败(回落预设);列表取第一条可能是旧记录。修复:记录 ID 双持久(localStorage 跨 iframe 重载)+ 分页响应归一化(records/rows/list/data/items)+ 按 updateTime/id 降序取最新。② 🔔 保存实时通知宿主——云端保存/另存成功后 postMessage 通知孪大师 UI 编辑器(约定 {type:"dpe:projectSaved", id, name, url}),宿主监听后实时刷新 3D 场景。③ 💡 修复"发光材质过一会消失"——根因=鼠标悬停高亮移开时无条件清零自发光(划过物体再移开=发光被抹掉);选中高亮同样覆盖。修复:悬停/选中进入时保存原自发光值、移开/取消时精确恢复。
v7.9.15(2026-08-27)全类型多选与组合打帧版① ☑ 全类型统一多选——拓扑连线、路径动画并入全局批量框架(batchMods),大纲勾选 + 批量显隐/删除;拓扑连线支持批量调样式(多选后属性面板显示批量条,颜色/宽度/线型/贴图/流速/缩放全部批量生效,含"删除全部");此前构件/标签/灯光/相机/发射器/程序化/曲线/水体/热力图/视频融合已支持(含视口框选)。② ◆ 组合打关键帧——序列属性树「位移/旋转/缩放」行新增整体打帧按钮,一次点击同时给 X/Y/Z 三轴打帧(无需分别控制三轴时效率倍增)。③ 💾 SaaS 云端另存——孪大师工作台嵌入模式下"另存为"直接存云端个人空间(默认赠 2G,可购扩展),不再下载本地文件。④ 🪟 Win7 兼容版——新增 Electron 22 独立打包工程(desktop-win7,最后支持 Win7 的内核;主客户端 Electron 31 覆盖 Win10/11),待涉密单位真机验证。⑤ 📋 版本形态定稿——三形态架构方案(Web SaaS 云存储版 / 客户端公网登录版(公测后)/ 客户端离线私有版(当前)),登录接口预埋文档 docs/version-auth-storage-plan.md。
v7.9.14(2026-08-26)拓扑连线修复与物体命名唯一版① 🔗 拓扑连线重名物体修复——端点绑定改用唯一 ID(重名物体按名绑定会解析到同一个导致连线失败的根因);属性面板起点/终点/分支下拉显示「名称 (#ID)」按 ID 精准绑定;工程保存按名称序列化(跨重开稳定)。② 🏷 物体命名唯一化——创建同类型基础模型自动加序号(正方体/正方体2/正方体3…),复制副本同理,从源头消除重名歧义。③ 📐 端点形状缩放——拓扑连线新增起点/末端形状缩放参数(属性面板滑杆 + topo.setStyle {startScale, endScale} API,0.1-10 倍);默认箭头整体调小(不再过大)。④ 🔌 拓扑参数全量 API——startScale/endScale 已入 topo.create/setStyle schema,AI 助手可调用全部参数。
v7.9.13(2026-08-26)ID 徽标版🔑 全部场景对象 ID 可见可复制——大纲视图全部行(构件/导入模型/标签/灯光/相机/粒子发射器/程序化生成/路径动画)名称旁新增 #ID 徽标(等宽小字,悬停高亮,点击复制且不触发行选中);动画序列面板每条序列行新增 #ID 徽标(点击复制,与 sequencer.list 完全一致)——彻底解决"播放序列需要 ID 但找不到"的问题;API 侧 object.list / sequencer.list 一直可查全部 ID。
v7.9.12(2026-08-26)复制能力与序列易用版① 📄 新增复制 API——object.duplicate(单个复制:目标+偏移+命名)与 object.arrayCopy(沿 X/Y/Z 轴线性阵列复制:数量+间距,间距缺省按构件尺寸自动排开);实例共享几何体显存零增;AI 助手可直接执行"沿某个轴向复制多个模型"。② 🎬 序列播放支持按名称——sequencer.play/pause/stop/seek 的 id 参数同时接受序列 ID 或名称(此前只认 ID,传名称报"序列不存在");查不到时报错附 sequencer.list 指引;也可用 sequencer.list 查询全部序列。③ 🔗 右上角手册链接修复(manual.html 更名适配,此前缓存旧页点击 404)。
v7.9.11(2026-08-26)透明背景版① 🫧 场景背景新增「透明背景」模式——背景模式下拉新增"透明背景",画布完全透明(实测像素 alpha=0),供 iframe 集成 CIMPro孪大师 UI 编辑器时在画布自定义背景图片(宿主页面任意背景透出);背景模式随工程保存/打开完整还原。② 🔧 新增背景模式 API——scene.setBackground(mode:dark/color/gradient/sky/hdr/transparent,含颜色参数)与 scene.getBackground(查询当前模式与配置);scene.setEnv 的 background 参数兼容传 "transparent"。③ 🔗 修复编辑器右上角「手册」链接——手册文件已更名 manual.html,链接同步修正(此前点击 404)。
v7.9.10(2026-08-26)正式服首发版① 🏷 飞线标签清晰度再升级——文字占标签高度从 52% 提至 69%(背景收窄),同字号标签更大(44 号 3.7m→4.8m),默认清晰可读;字号真实驱动文字视觉大小。② 🌐 下载页版本统一——修复客户端卡片 V7.9.7 与对比表 V7.9.4 残留矛盾,全页统一当前版本。③ 🖥 三客户端 V7.9.10——DPE 图标版三平台客户端重打包并接入官网下载。④ 本版起正式部署至正式服(dp-editor.picimos.com)。
v7.9.9(2026-08-26)水体真实感与模型库修复版① 🌊 水体反射真实感重做——4-tap 错位采样(反射被微波自然揉碎,告别完美镜面塑料感)+反射能量衰减+菲涅尔中角度收敛(正对水面以透射为主,符合物理)。② 📚 模型库单 mesh 模型修复——修复复古音箱/受损头盔等单 mesh glb 拖入场景后不能选择、不能删除的根因(soloWrap 包装组注册黑洞);全模型库统一可点选/可删除/进大纲。③ 🏷 飞线标签字号修复——字号真实驱动标签视觉大小(此前被世界高度钳制锁死,调字号只改标签形状不改文字大小);44 号→120 号视觉近 3 倍实测生效。④ 🚀 自动部署体系——正式服 SSH 公钥已开通(49.234.128.96);deploy-ask.mjs 双重确认部署;.deploy.env 完整配置(test/prod)。
v7.9.8(2026-08-26)底图通用 gizmo 与脚本沙箱修复版① 🖼 参考底图全面融入场景通用变换体系——删除独立 gizmo,底图直接用主坐标轴(W/E/R 与其他模型完全一致);修复调整底图时相机被锁(底图上可自由拖转视角,点选仅在单击时触发);修复属性面板锁死(点其他物体正常切换);透明度调整直连材质丝滑不卡顿;自由旋转(含 rx/rz)序列化无损往返。② 📝 脚本沙箱两层修复——脚本上下文不再整体冻结(可挂 userData 自定义状态);属性路径支持简写(rotation.y/position.x/scale.z,AI 生成脚本不再报"不支持的属性路径");"尾水管 5°/秒旋转+闪烁"端到端实测精确生效。③ 🤖 AI 工具调用轮数无上限(999 轮,中断靠 ■ 键/4 分钟超时兜底)。④ 🚀 部署体系——接手 web 团队 deploy.mjs(test/prod 一键部署,密钥不入库);客户端 COS 自动上传脚本;发布 SOP(正式服部署必须总监确认)。
v7.9.7(2026-08-26)保存完整化与 AI 交互版① 💾 保存管线架构性重构——修复 8 个已有序列化模块(交互/曲线/热力图/水体/拓扑/手绘/坐标/视频融合)的节点在落盘前被丢弃的管线断裂;补齐 script/databind/sequencer/track 四模块序列化;脚本代码/交互规则/数据绑定/序列轨道/追踪目标全部保存往返实测;测量/剖切等一次性内容不入档。② 🤖 AI 交互与动画修复——交互 prop 动作字段名兼容(AI 创建的 property/val 此前静默失败)+ toggle 语义实现;"点击蜗壳切换其他模型"实测完整生效;AI 工具调用轮数 8→16("蜗壳放大 2 倍+材质渐变"复合任务 34 步全部成功);修复模块缓存(动态 import 版本参数)。③ 💬 AI 聊天体验——消息一键复制、回答中断(■ 按钮+AbortController 全链路)、思考中动画提示。④ 🖼 手绘体验修复——参考底图视觉=参数一致(修复高度轴映射错误)、快捷键与编辑器统一(W/E/R)、材质/顶点编辑实测生效。⑤ 🖥 三平台客户端 DPE 图标——mac/win/linux 图标统一 DPE logo(修复 7.9.5 win 图标实为默认原子图)。
v7.9.6(2026-08-25)保存修复与大模型调通版(能力 413→415):① 💾 保存重大 bug 修复——此前序列化只存构件初始位、遗漏删除/隐藏/移动状态(重开后用户修改全部丢失=预设场景假象);现已四处对称修复(工程包保存/加载/模型导入后挂接/撤销快照),删除、隐藏、移动的构件重开完整还原。② 🤖 大模型彻底调通——修复 Function Calling 工具名规范冲突(能力名点号不符合大模型 function name 规范→安全名映射双向转换);实测 DeepSeek 纯对话+工具调用真实执行成功("把顶盖隐藏"→AI 自动调 object.setVisible);DeepSeek 在线/本地版均可直连。③ 🖼 参考底图全变换升级——选中/取消/切换(点空白取消);gizmo 三模式(位移 G/旋转 R/缩放 S,缩放三轴独立);属性面板全字段(名称/XYZ/旋转/宽高/锁定比例/透明度/可见性/删除);大纲视图「🖼 参考底图」分组行(选中联动/显隐/删除/双击聚焦)。④ ✏️ 手绘物体属性面板——墙体(墙高/墙厚/材质/闭合/编辑顶点)、多边体(挤出高度/材质/编辑顶点/闭合)、面片(材质/闭合/透明度/编辑顶点)全字段实时生效。
v7.9.5(2026-08-24)开关切换与云端资源精致版(能力 407→413):① 开关 API 统一 toggle 语义——33 个开关类 API(13 模块:构件/灯光/相机/标签/热力图/水体/拓扑/曲线/手绘/视频融合/交互/序列/脚本/数据绑定等)支持 "toggle" 参数值与无参调用=智能切换(第一次开第二次关);显式 true/false 完全兼容;新增 heatmap.toggle/topo.toggle 等 6 个统一配套 API;顺带修复 water.visible 从未生效的存量 bug。② 大模型对接场景明确——DeepSeek 在线/本地版均可浏览器直连(实测);腾讯混元本地版经本地网关转发可用(实测链路通),在线版受浏览器安全策略限制暂不可用(UI 已标注指引);供应商下拉明示可用场景。③ 云端资源库精致化——卡片 hover 高亮(主色描边+上浮+缩略图放大 0.15s 顺滑);材质卡程序渲染真实材质球(径向渐变+高光+反光+地面阴影);角标圆角胶囊+下载按钮主色渐变+进度环半透遮罩。④ 数值输入框拖拽调值(v7.9.4 追加:全部属性面板数字框按住左右拖快速调值,Shift 加速 Alt 微调)。
v7.9.4(2026-08-24)体验修复与客户端版① 点击交互四连修——选中包围盒恢复(淡灰蓝半透);模型点击不消失(全量实测 0 异常);Shift 拖拽误复制根治(实时按键判定+失焦复位,此前键盘状态残留会导致每次点击复制出 PIVOT_副本);副本命名去 PIVOT_ 前缀。② 🤖 混元大模型可用——修复浏览器直连 CORS 拦截(Failed to fetch):AI 助手自动走本地网关转发(/llm-forward),粘贴腾讯混元 API Key 即可用(对话+3D 生成)。③ 🎥 视频融合两项——大纲选中后属性面板 19 字段接管;投影"探照灯"根治(物理衰减+软边+自适应强度,亮度滑杆直接驱动)。④ 官网升级——favicon 与 cimpro.cn 一致;banner 真交互(拖拽旋转+惯性+hover 放大+点击粒子爆发);DPE 字样连续;品牌统一 CIMPro孪大师(去除公司名);预约演示弹客服「小派」二维码;CTA 文案 1 小时;下载页三平台客户端真实下载。⑤ 🖥 三平台桌面客户端——Windows/macOS/Linux Electron 客户端(内置静态服务器完全离线),官网下载页直接下载。
v7.9.3(2026-08-24)AI 对接与 SaaS 框架版(能力 393→407):① 选中包围盒彻底移除——点击模型不再出现外框线框(选中反馈=轻微微光+菲涅耳轮廓描边+大纲高亮;批量框选的包围盒保留)。② 🤖 腾讯混元大模型预对接——AI 助手与 API 示例中心共用配置:供应商「腾讯混元」预填 baseUrl/8 个模型名/混元 3D 独立端点,粘贴 API Key 即用(控制台申请);AI 配额收费框架(次数/token/积分三模式+超额拦截+setPurchaseHook 支付回调,本地版默认无限,详见 docs/ai-assistant.md)。③ 🎥 视频融合视锥辅助线——贴片模式显示光心→贴片四角视锥边线+矩形描边,与贴片变换严格同源,fov/宽高比/距离/相机位姿实时跟随;编辑显示预览播放自动隐藏;video.setHelper API。④ SaaS 订阅版框架——FEATURE_FLAGS.saas 单开关(本地版零影响);存储 Provider 抽象(本地/云端可切换);计量层(存储/AI/云下载三类计费事件统一上报);支付收敛 platform.billing.*(订单/收银台/webhook 契约);完整 web 前后端移交文档 docs/saas-architecture.md(MVP 三步上线路径)。⑤ 创建面板重设计——8 个彩色分组条(灯光/相机/标注/数据可视化/组态连线/水体/手绘建模/基础物体)+三列按钮网格+折叠记忆,24 个功能入口全保留。⑥ 拓扑/路径贴图全面重做——512×128 高分辨率五色系(电流红/物流橙/人流绿/数据青/能量紫),周期无缝 tileable+边缘透明无毛边+各向异性 8;路径 8 种新风格(含实线箭头/圆点流);贴图选择器改为可视化缩略图网格。⑦ 官网升级——核心功能卡 14→22 张(视频融合/开放 SDK/曲线/拓扑/手绘/云端资源/坐标配准/场景关卡补全);新增下载页(网页版立即体验+Win/macOS/Linux 敬请期待+私有化咨询);川崎 1.5GB 模型导入评估报告 docs/kawasaki-test-report.md(建议建模团队 Draco+分块+KTX2 后再测)。
v7.9.2(2026-08-24)体验修复版(能力 385→393):① 🔗 拓扑连线视口可选——视口点击连线管体/端点即选中(halo 加粗高亮+淡灰蓝包围盒+toast 提示,属性面板联动;重建保持选中态;新增 topo.select/deselect/clearAll);🧹清空场景联动清除。② ✏️ 手绘模型三修复——清空场景彻底清理顶点手柄/参考图/绘制预览(sketch.__clear 联动);面片/墙体/多边体选中变黑根治(绕开 transmission 菲涅耳克隆异常,自管轮廓线高亮);参考底图多图重做(最多 8 张,每张可调位置/旋转/宽度/透明度/可见性/删除,按图片真实比例不变形,视口点选+地面拖拽 gizmo,序列化多图往返,API setReference/listReferences/removeReference/setReferenceParams)。③ ☁️ 云端资源库并入模型库/材质库——移除独立浮窗,云端模型/材质分区直接嵌入现有页签(角标区分本地/云端/已下载/付费 ¥),下载进度环原地刷新;付费体系预留(price 字段+金色价格角标+canDownload 双路径拦截+付费意向事件+setPurchaseHook 支付回调零改动接入);新增 cloudassets.getManifestConfig 后台配置读接口+docs/cloudassets.md 后台配置指引(清单生成/上架下架/CDN 部署/定价)。④ 页面 favicon 透明背景(六页面统一橙色双塔 logo 无黑底)。
v7.9(2026-08-24)统一管理与体验大版本(新增云端资源库模块共 19 个,能力 385+):① 大纲统一管理(最重要)——热力图/飞线/电子围栏/路径/水体等所有创建物全部入大纲(👁显隐/✕删除),🧹清空场景联动清除零残留;选中任意模块物体属性面板显示「📍 变换」(位置/旋转 XYZ 可调,props 数据绑定同源);组管理——组👁递归显隐/✕连带删除,group.* 5 项 API(显隐/透明/材质/整体移动/列表)全开放;框选 everything——Shift+拖框命中所有元素类型(构件/标签/灯光/热力图/水体/曲线/标记物),批量删除/显隐(48 项测试)。② 零代码可视化交互配置(重点)——交互动作新增"可视化调用":39 域能力浏览+搜索+常用置顶 → 参数自动表单(场景元素下拉选择器/智能类型推导)→ 等价代码实时预览 → 动作链执行;6 个常用模板一键插入(点击A→B半透明/播放动画/显隐/相机飞行等,全部真实触发验证);配置 JSON 导出/导入,宿主嵌入三方式(38 项测试)。③ 动画即点即播——带动画模型属性面板新增「🎬 动画」板块:剪辑下拉+播放/暂停/停止/倒放+速率+循环/pingpong,无需进时间线;model.anim.* 7 项 API;时间线 clip 末端拖拽=循环复制(2 秒动画拉到 20 秒即循环 10 次,结束保持末态);所有大纲元素可拖入时间线 K 帧(标签/热力图/水体/路径/围栏/飞线/灯光/相机,48 项测试)。④ 曲线三件套七项修复——绘制吸附(空场景贴地/有模型贴模型表面);顶点编辑升级为坐标轴手柄(像移动物体一样拖轴,实时重建);箭头贴图保比例不变形;围栏贝塞尔底面/立面共用采样衔接;飞线端点拾取场景任意元素绑定跟随(构件/灯光/相机/标签);飞线标签 3x 超采样+各向异性清晰可读(46+80 项测试)。⑤ 热力图三项——色带自定义编辑器(3-8 色标拖拽+拾色器+实时预览,setPalette API);修复绑定物体后调参/切样式卡死(核半径封顶+渲染器拆分重建,实测零长任务);2D 精度四档可配(默认 512²,ultra 1024²)+各向异性(30+32 项测试)。⑥ 水体效果重做——半分辨率平面反射+双法线贴图交叉流动+菲涅尔+深度渐变+岸线泡沫+焦散(Voronoi 干涉)+太阳高光,40 项参数全走属性面板,纹理全程序化生成零外部资产,风暴+高画质档 60fps(44 项测试)。⑦ 导入与剖切——修复 API 示例中心视口卡死(材质缩略分帧生成,60fps);压气机台 131MB STP 导入成功(NX AP203 短实体名展开+超限自动降级);带贴图模型剖切断面精确封闭(电气控制柜实测);剖切控制球屏幕尺寸恒定自适应;STP 导入进度转资源面板卡片(占位卡+转入后台+可停止,弹窗不再遮挡编辑)(23+18 项测试)。⑧ ☁️ 云端资源库框架——远程清单协议+按需下载(进度环)+浏览器持久缓存(二次秒开)+存储统计,模型库/材质库云端化就绪(接入真实 CDN 三步完成),本地资源零影响(33 项测试)。⑨ 品牌与文档——API 参考文档网页版(api-reference.html:360+ 能力卡片/域导航/搜索/三形态示例);全局统一 DPE 称谓;五页面 favicon 统一;示例中心 logo 与编辑器一致;手册全量链接修复与内部内容清理(33 项测试)。⑩ 官网宣传页(website/,交付 web 团队集成 cimpro.cn)。
v7.8(2026-08-23)创作表达与工业组态大版本(新增 2 模块共 18 个,能力 313→350+):① ✏️ 手绘模型——创建面板新增:三种绘制模式(面片多边形平面/面/水面,墙体折线挤压高+厚、闭合自动成院墙,多边体闭合多边形挤出实体);视口左键加点、Enter/双击闭合、Backspace 删点、Esc 取消;参考底图(导入图纸/照片铺地描线,透明度与宽度可调);生成物=普通构件(可选中/改材质/变换/入大纲/可再编辑顶点:拖拽手柄实时重建);31 种材质预设直用;API sketch.*(createPolygon/setParams/updatePoints/startDraw/destroy/list 等)+序列化往返+撤销重做(45 项测试)。② 🔗 拓扑连线(组态连线)——创建面板新增:物体间 3D 连线表达管线/供电/信号逻辑;三种线型(直线/圆角贝塞尔/直角正交);流动 UV 动画(速度可调可暂停可反向)+5 种流动贴图;箭头端点(起点形状/终点箭头);端点绑定物体跟随(移动物体连线端点实时跟随);分支(一条主线多分支绑第三物体)与一对多扇出;改绑/解绑/清空;颜色可数据绑定驱动;大纲「🔗 拓扑连线」分组管理;API topo.* 全量(create/setStyle/setFlow/bind/addBranch 等 17 项)+ GUI 两步拾取创建 + undo/redo + 序列化(41 项测试)。③ 渲染模式与状态系统——每个物体独立 renderMode(真实/🔵 全息/🕸 线框)与 status(正常/预警/告警/离线,状态色自发光覆盖渲染);层级应用(对组设模式整组生效);随撤销快照与序列化保存;大纲显示模式图标。④ 边缘高亮 + 二维通信——菲涅尔描边高亮三通道(选中/悬停/持久告警):API object.setEdgeHighlight 或数据绑定 edgeHighlight.on 实时驱动告警边框;comm.emit/comm.subscribe 三维↔二维事件总线(二维图表联动三维场景、三维事件推送给二维大屏)+ 场景信息查询 API(详见 docs/integration-comm.md)。⑤ 贴图通道升级——材质双面渲染开关(GUI/props/API 同源,随预设与工程保存);贴图插槽支持多选 PNG 序列帧贴图(帧率可调)与视频文件贴图⑥ 高斯泼溅 PLY 导入——自动识别高斯 PLY 头(f_dc_0/scale_0)与普通 mesh PLY 分流;高斯点云变换+自动取景,导入即见(修复"导入看不到东西")。
v7.7(2026-08-23)品质与专业深化版(能力 313 项/16 模块):① 水体专业级重做——平面反射(场景倒影)+多层法线波光+菲涅尔+太阳高光+Gerstner 四档风浪+波峰泡沫+水下体积雾+船体动画叠加波浪+交互泡沫(对标业界标杆水体方案,79 项测试)。② 曲线三件套深度修复——电子围栏多边形闭合无裂缝+贝塞尔平滑生效+立面 UV 连续流动+6 种科技感贴图(饱和警戒红);飞线起终点坐标输入/绑定任意物体(模型灯光相机)/端点标签样式全开放+6 种 icon 预设;路径附加支持大纲拖入+场景拾取+自定义跟随视角保存+跟随相机退出提示条;全部曲线顶点编辑(80 项测试)。③ 相机约束系统——固定机位(只旋转)/受限漫游(包围盒)/轨道锁定(目标+距离+俯仰限制)四模式(专业级相机约束,27 项测试)。④ 弹窗体系重构——所有物体级弹窗属性(不依赖标签):单击/hover/双击/数据自动触发;模板占位符+物联网数据字段实时刷新(piadmin 数据进弹窗);图文/视频内容;跟随移动物体;3 套布局模板(94 项测试)。⑤ 视频融合投影修复——SpotLight 投影真实投到模型表面;API 示例中心视口卡死修复(预览可旋转观察);AI 助手配置界面+对话框可拖动(87 项测试)。⑥ 交互系统独立面板——迁至「属性」与「步骤」之间的独立页签;规则卡片化+分步向导+暗色输入风格+手册详细教程(54 项测试)。⑦ 时间线框选选框可视化+统一移动删除。⑧ 模型库 hover 高亮+拖入场景(视口落点放置)。⑨ 9 个专业级 PBR 车漆材质(清漆层 clearcoat+珠光)+模型库新增 2 个走路循环动画角色(巡检路径动画)。⑩ 坐标工具 GIS 严谨化——CGCS2000/UTM/高斯克吕格分带/高程基准(EPSG 体系)+浮动可拖面板(51 项测试)。⑪ 全局品牌统一 DPE 数字样机编辑器(统一产品称谓)。⑫ 创建面板秒开(模块并行加载 509ms,原串行延迟数秒)。
v7.6(2026-08-23)DPE 数字孪生大版本(系统缩写正式定为 DPE Digital Prototype Editor;新增六大孪生模块,能力总数 170→250+):① 🌡 热力图——创建面板新增:2D 平面(灰度叠加+调色板)/3D 体素柱/粒子三种渲染器,拖入即见默认预设;半径/强度/色带/边界裁剪/动态流动/极值标签/hover 数值全参数;场景物体绑定模式(几百辆车移动热力图跟随)+ 数据驱动 API(32 项测试)。② 📈 曲线三件套——路径(绘制+贝塞尔/直线切换+流动箭头贴图+全参数运动路径动画(Follow/前方向轴/上方向轴/倾斜)+跟随相机(驾驶/俯瞰视角));电子围栏(多边形+extrude 高度+逐面独立材质+流动发光贴图+告警红闪状态机+数据驱动自动创建告警围栏);飞线(多对多配对+弧度+流动贴图+端点标签弹窗)(44 项测试)。③ 🌊 水体——水面(四档风浪 Gerstner 波+泡沫+反射)/水下(体积雾/散射/水下视角)/船体绑定波浪起伏摇摆/交互泡沫/全部参数可 K 帧与数据驱动(45 项测试)。④ ⚡ 交互事件系统——所有元素属性面板新增「交互」板块(乐吾乐/DataV/图扑等七家竞品调研融合):事件源(点击/悬停/属性变化/自定义)→可选条件→动作链(改属性/发事件/调任意 API/延时/提示);interact.trigger 外部驱动整条链(零代码蓝图联动核心)(42 项测试)。⑤ 🤖 AI 助手——左栏新增「AI助手」页签:类 ChatGPT 聊天界面;多模型对接(DeepSeek/腾讯混元/OpenAI 兼容/私有化端点/MCP 网关——供应商注册表可扩展);能力清单自动注入系统提示词+Function Calling 完全操控软件(创建物体/调材质/写脚本/组合素材搭建场景);离线规则引擎无需 Key 即可体验;腾讯混元 3D 生成接口(生成模型直入资源库);知识库问答(软件手册/API 文档);danger 操作确认(31 项测试)。⑥ 🗺 坐标系工具——WGS84/GCJ02/BD09 纠偏链+WebMercator+两点相似/三点仿射/七参数;可视化配准工具(拾取场景点↔数据源坐标→解算→残差预览→保存绑定);coord.moveTo 经纬度驱动物体(26 项测试)。⑦ 🎬 场景(关卡)系统——大纲视图场景下拉:创建/切换/删除/重命名;多场景平行世界(北京产线/上海产线互不可见互不影响);快照切换架构零侵入(四模式全回归 38 项测试)。⑧ 视频融合修复与增强——修复导入本地视频系统卡死 bug(中铁四局视频实测流畅);新增投影模式(SpotLight 投影贴图:视频画面真实投射到三维模型表面,类投影机)与贴片模式并存(70 项测试)。⑨ 弹窗预览模式修复——编辑模式配置弹窗→预览模式全部正常(点击/hover/告警触发、billboard/screen 双模式、fixed 定位)(71 项测试含预览态矩阵)。⑩ DPE API 示例中心升级——改名「DPE API 示例中心」(系统缩写 DPE);修复 API 参考文档链接;新增 🤖 AI 对话面板(自然语言组合调用 API:「把顶盖变成红色金属材质」→自动执行,离线可用)。⑪ 手册新增「部署与运维」章节——环境要求/三包部署(nginx 完整配置/Docker compose/腾讯云脚本)/升级维护流程/开发者上手指南。
v7.5(2026-08-22)交互与开放大版本① 性能二次攻坚——修复 DPR2 高分屏下十几帧问题(像素比上限 1.5→1.25 + 修复分辨率降档失灵的脏检查 bug + 自适应画质升级为「画质×分辨率」六档阶梯:极弱 GPU 也能自动自救 + 修复升档永久锁死 bug + 全部 backdrop-filter 清零):弱 GPU 实测 11fps→29fps(2.6 倍自救),正常环境满帧 60。② 强制注册弹窗取消——公测阶段默认全放行(?auth=embed 嵌入校验保留给孪大师集成,AUTH_STRICT 上线开关交 web 团队)。③ 剖切断面终极修复——四轮攻坚找到真正根因:顶点焊接带全属性哈希导致 GLB 永不水密、manifold 精确路径 0/20 全军覆没(用户一直看到的是 stencil 降级穿帮);改为位置单属性焊接+开口壳体自动补盖:20/20 构件全部走数学级精确布尔,47 张多角度截图验证严丝合缝④ 清空场景彻底清序列——修复 v7.4 修复失效的根因(模块加载时序导致计数法失灵),改为直接挂钩清空按钮;序列标记物标签加大到 2.2m 参考编辑器标签观感。⑤ STP 导入可停止——转换进度条加「⏹ 停止导入」按钮(终止 Worker 立即中止)。⑥ 全局撤销重做框架——Ctrl+Z/Ctrl+Y 覆盖 12 类操作(移动旋转缩放/材质/轴心点/删除创建/打组解组/重命名/步骤排序/显隐/标签/序列标记物拖入删除/灯光相机),Command 模式统一栈上限 100 步,顶栏撤销重做按钮+toast 提示(75 项测试)。⑦ 标签与弹窗系统大升级——标签背景贴图(上传/平铺模式);全属性数据驱动(含弹窗属性 label.popup.*);详情弹窗系统(点击/悬停/告警三种触发、billboard 3D 与屏幕两种模式、跟随/偏移/固定三种定位、告警红色态、全属性可数据驱动);批量创建标签+样式模板(存/应用/重命名/删除,一键同步 99 个同类标签)(59 项测试)。⑧ 视频融合模块上线——相机属性「启用视频融合」开关(不用时不占界面);投影面跟随相机;视场角/宽高比/亮度/色温/对比度/饱和度/去畸变 k1k2/镜头预设全参数;15 项 video.* 能力全量 API(批量创建/参数/播放控制),数据绑定可驱动;rtsp/海康/大华/萤石云网关方案文档化(MediaMTX 选型)(39 项测试)。⑨ DPE API 示例中心上线——api-playground.html:全量 170 项能力交互式浏览(24 域分组/搜索/schema 自动表单/一键运行/事件日志/10 个示例脚本);配套 docs/api-reference.md 完整 API 参考(三形态调用示例:postMessage/SDK/MCP)+ 文档生成器(随 manifest 自动再生成);手册第 19 章挂接链接。⑩ 操作手册全面审计同步——14 处过时内容修正(动画编辑器→序列/STP 入口/面板位置/发布流程/材质 82 种等)+9 处缺失补写(快速上手路线图/渲染性能章节/测量工具/多选批量等)+ 版本号统一。⑪ 三份深度调研方案——热力图(docs/heatmap-research.md:灰度叠加+调色板范式、体素/粒子/箭头 3D 样式、增量网格聚合)、曲线三件套(docs/curves-research.md:路径+运动路径参数全集+跟随相机/电子围栏动态墙/飞线,26 项 API 设计)、坐标系转换(docs/coordinate-research.md:WGS84/GCJ02/BD09 加密链、可视化配准工具、CoordinateBinding 契约)。
v7.4(2026-08-22)性能与品质修复版① 性能大幅修复(最高优先级)——默认场景帧率从 20fps 恢复到 60fps(5 倍提升):根因=视口工具栏 backdrop-filter GPU 模糊叠加在透明 WebGL 画布上(去除后 +32fps)+ Bloom/SMAA 全屏后处理开销(均衡档 SMAA 降采样档位 + 新增自适应画质 Governor:帧率持续偏低自动降档流畅模式、恢复后自动升档,用户手动选画质则关闭自动)。② 轴心点设置修复——嵌套在多层组内或父级带旋转/缩放的物体设置轴心点不再飞走(改用矩阵补偿算法,子级世界变换严格不变,任意层级任意变换组合精确)。③ 爆炸图三段式记忆修复——开爆炸→调整相机与标签位置→关爆炸(此刻快照记忆)→再开爆炸完整恢复调整后的相机视角与标签位置(修复了自动取景覆盖记忆视角的冲突)。④ STP 导入参数面板回归——选择 STEP 文件先弹参数设置面板(精度高/中/低/自定义、单位 mm/cm/m/inch、构件合并模式、构件上限),确认后才开始转换,取消可放弃;API 直转路径保持无面板。⑤ 统计口径修复——视口左下角构件数与资源库一致(根因=STP 构件的包装组与 mesh 双重注册导致显示约 2 倍;统一为叶子构件口径,大纲/内存同步减半)。⑥ 清空场景联动序列标记物——🧹 清空按钮现在会一并清除大纲里的 🎬 序列标记物(贴图 dispose 防泄漏,序列数据保留)。⑦ 发布-集成导出进度条修复——进度条真实推进到 100%(根因=embed 分支从未更新进度条)。⑧ 步骤卡片↔流程图节点双向联动——点步骤卡片流程图节点蓝色发光高亮+画布自动居中;点流程节点步骤列表自动滚动到对应卡片并选中。⑨ 手册新增「脚本系统与数据驱动实战」大章节——7 个脚本实例+5 个数据驱动实例+组合实战(AGV 监控场景四层协作)+完整 API 参考表。⑩ 深度调研两份实施方案——视频融合去畸变(docs/video-fusion-research.md:双畸变模型+GLSL LUT 校正+多路拼接 P0-P3 分期)与大规模移动目标数据驱动(docs/lbs-smooth-research.md:快照插值+航位推算限时+InstancedMesh 批量渲染,500 目标 5Hz 方案)。
v7.3(2026-08-22)平台化与协同大版本① 序列编辑器九项升级(184 项测试)——动画剪辑独立轨道(每个加载的动画=一条独立轨道行,位于变换组之上,多动画多轨道互不占用);片段裁剪(拖拽左右端改入点出点、可延长回原长、播放头处剪断拆两段,视频剪辑软件式);序列标记物高清标签(devicePixelRatio 适配文字锐利);标记物属性面板播放控制完整(播放⇄暂停状态互切+停止+倒放,API/脚本/MCP 可驱动);大纲标记物眼睛显隐修复;时间线长度自适应(加载长动画自动扩容);关键帧选择/移动/删除全面回归;全部属性行输入框显示真实值并随求值实时刷新。② 播放器纯净版+材质持久化修复(29 项测试)——移除"水轮机检修标准作业培训"品牌字样(标题随课件名);修复用户改材质保存后播放器仍放默认场景的严重 bug(根因=vtpack 无内嵌模型分支漏传 mats+只认顶层 glb;五格式模型通吃+贴图/透射/UV 参数全应用,编辑器改色→保存→播放器 readback 逐项一致)。③ 预览态隔离——预览模式禁一切编辑(无 gizmo/点击不选中/大纲只读),SDK 事件仍可订阅;预览链接修复(IndexedDB 场景存储,链接还原最新编辑场景非默认)。④ 视口多选+批量赋材质——Shift/Cmd+拖框多选构件(大纲/视口互通),材质预设与通道参数批量应用,Esc 清空。⑤ 步骤细节面板跟随卡片——点击步骤卡片紧随其下手风琴展开(不再翻到底部找),展开动画+自动滚动。⑥ 材质实时刷新——赋材质立即显示到属性面板(免吸管);API/脚本改材质自动落盘(保存工程不丢)。⑦ 脚本编辑器 IDE 化(26 项测试)——CodeMirror 语法高亮+行号+ctx. 自动补全(get/set/math/log/属性路径链式提示)+生命周期模板;运行日志一键复制。⑧ 孪大师平台化四件套(28 项测试,145 项能力)——用户注册权限门控(piadmin token 校验+暗色引导页+本地开发白名单);piadmin 2G 专属存储适配器(上传/配额/列表/删除,mock 即用+五端点契约待对接);能力 Manifest 动态反射(一个 API 返回全量能力清单含参数 schema/版本/since 标记——前端团队自动生成可视化交互面板,代码更新即自动生效);能力面补全 35 项(工程/模型 attach·detach·打组/材质细粒度/灯光/相机 fov·曝光·DOF/模式切换/步骤跳转/标签参数/测量裁切调用)。
v7.2(2026-08-21)SDK 与集成架构大版本① DPE SDK 双模式(重大更新)——为孪大师 UI 编辑器等外部系统提供的全新集成方式:direct 直嵌模式(SDK 在宿主页面容器内直接创建 WebGL 渲染器,API 函数直调零序列化:实测 1000 次属性调用仅 1.7~2.7ms,比 iframe+postMessage 方式空载快 15~27 倍、宿主繁忙时快 200 倍以上,事件同帧送达);iframe 兼容模式(保留完整编辑器能力,调用自动合并优化);auto 模式自动协商选优。SDK 主文件仅 6KB(gzip),UMD/ESM 双格式 + TypeScript 类型定义(sdk/cimpro3d-sdk.d.ts),自带隔离三维运行时不污染宿主;30 项播放域能力(相机/构件/材质/步骤播放/爆炸图/截图)+ setData 万能驱动口(蓝图/数据大屏一行代码驱动任意属性);集成样例页 sdk/demo.html(含性能测试按钮),完整集成手册见 docs/sdk.md。② 剖切面几何级重构(WASM 布尔几何内核)——断面由"视觉贴面"升级为数学级严丝合缝的实体封面(WASM 布尔引擎 vendor 本地化,Worker 后台计算):剖开后断面完全封闭如剖切实心物体,任意角度旋转/缩放无破洞无闪烁;断面材质默认继承被剖物体、材质插槽支持热切换;拖动剖切面 120ms 节流实时重算(默认水轮机 64~80ms);非水密网格自动逐件降级、超 30 万面整体降级旧方案兜底;关闭剖切零残留。③ 序列编辑器修复与增强——修复关键帧错位严重 bug(帧显示到下一属性轨道,根因=刻度尺 30px 偏移);骨骼蒙皮与深层级动画模型(Dabai/tank 真实模型实测)从大纲拖入序列后在「变换」组之上显示 🎬 动画轨道,可加载模型自带剪辑并驱动蒙皮/节点动画;移除「导入旧时间轴」「导入动画模型」按钮(入口统一);面板内所有行/按钮/图标 hover 高亮全覆盖。④ 导入模块统一重构——「⬇ 导入模型」成为唯一导入入口(文件选择器可直接选 STEP/STP,自动路由转换管线+全局进度条);导入弹窗全新设计(三维模型/工业模型/贴图/工程文件四分组卡片,STEP 带 beta 徽标,支持拖拽文件到弹窗导入);资源面板模型缩略图(模型入库自动生成 128×128 实景截图,旧资产打开面板自动补生成);修复 ASM01#.stp 解析失败(根因=默认构件上限 500,超限自动放宽至 5000 重新构建)。⑤ 架构基准对标——完成 12 家主流数字孪生/Web3D 竞品深度调研(docs/architecture-benchmark.md):能力注册表四位一体(API/SDK/MCP/脚本同源)为行业差异化优势。
v7.1(2026-08-20)交互与动画系统大版本🎬 动画序列编辑器(专业级·重大更新):底栏新增「序列」页签——多动画序列管理(新建/重命名/复制/删除/搜索/启用开关/优先级);物体(构件/灯光/相机/标签)加入序列后展开全属性树可K关键帧(变换各轴/可见性/材质全参数/灯光强度颜色/相机FOV等);6种插值(auto/linear/constant/easeIn/easeOut/ease);播放头拖拽实时预览、关键帧拖动/Alt复制/右键菜单/删除、Ctrl+滚轮时间缩放、循环(含往返);多序列冲突=优先级大者胜、相等则混合;禁用序列自动恢复基线值,与数据绑定/脚本驱动三方共存;31个 sequencer.* 能力全部开放给 API/脚本/MCP;一键「导入旧时间轴」迁移;序列 export/import 序列化。面板布局升级:左右面板可「贯通到底」(延伸到软件底部,底部流程/动画面板对应侧缩进);大纲/属性面板可单独收起(页签栏 ⤓/⟨/⟩ 按钮,收起后屏幕边缘出现恢复条)——脚本/数据绑定/步骤制作等长内容可全屏查看。模型库内置扩充:武器分类新增「冷战坦克(高精度105MB)」、机械分类新增「电气控制柜」,开箱即用。新建项目命名:新建项目弹窗要求输入项目名称,自动同步工程名/课件标题/发布名。发布课件重构:主发布形态改为「项目文件(.vtpack)」——模型+课件逻辑+材质+步骤一体化,播放器打开即自动进入播放模式;「在线分享」面向云端工程库(生成直开链接,云端服务接入后生效);移除 Babylon.js 等旧话术。播放器升级:打开项目文件(.vtpack)为主入口(兼容旧 json+glb);演示/培训/考核模式进入后不再自动开始,显示「开始播放/开始练习/开始考核」大按钮,点击才启动(考核点开始才计时);模式中可随时打开其他课件。渲染设置修复:天空组件开关、时刻/太阳方位/天气、SSAO、阴影总开关此前无效(通用开关绑定覆盖根因)——全部修复生效;阴影开关切换强制重烘。裁切模式修复:只裁模型构件(坐标轴/地面网格/相机图标/标签不再被误裁);裁切控制球自适应场景尺寸更醒目;裁切模式锁定(不能误操作其他物体);方向翻转等参数实时刷新。Excel 双向闭环:大纲导出→外部批量修改→步骤制作器导入更新(全字段无损往返:动作/方向/距离/并行组/工具/提示/机位);无步骤时可导出构件清单模板盲填再导入生成步骤(第2行有填写说明);中文方向(上下左右前后)与动作(拆卸/装配/检查/润滑)直接可填;导入汇总(新建/更新/跳过/失败);修复回灌时装配步骤被改成拆卸等8个缺陷。演示/培训/考核(编辑器):进入模式不自动播放,点击「开始」启动。大纲相机/灯光重命名:小眼睛前的 ✎ 图标。导入模型格式提示:点击「导入模型」先显示支持格式清单(glTF/GLB/FBX/OBJ/STL/PLY/贴图/STEP/工程包)再选文件。即时 tooltip:所有按钮提示悬停立即显示(原延迟约1秒)。【V7.1 公网版增补】剖切面实体填补:剖切断面自动用实体面封上(stencil 缓冲技术),断面材质默认继承被剖切物体自己的材质颜色(金属模型断面是金属色、木头模型是木色);剖切面板新增「断面材质」插槽——可选自动(继承物体)/金属灰/钢蓝/橙色警示/半透明蓝/自定义颜色,一键统一所有断面。产品更名:正式定名「数字样机编辑器 V7.1」(浏览器标签页标题、logo、播放器同步)。面板贯通自适应:贯通到底模式下三维视口工具栏/统计条/模式徽标等浮层自动偏移不被遮挡,贯通按钮 icon 随状态切换(⤓展开⇄⤒收起)。STEP 导入标注 beta:面板标题加 beta 徽标提示功能持续完善中。序列编辑器五项优化:①时间轴刻度规整化(去除 1.9999 类浮点尾差,自适应间隔)②移除「+物体」按钮——直接从大纲视图拖构件/相机到序列(支持多选整组拖)③工具栏紧凑化(循环=三图标分段控件、速率窄下拉,单行不换行)④序列可拖入三维场景生成 🎬 标记物(自动启用):标记物显示在大纲「🎬 序列」分组,选中后在属性面板显示序列属性(启用开关/优先级/时长/循环/速率),开关同步支持 API 与数据驱动(属性路径 seq.序列名.enabled)⑤「导入动画模型」「🎥 渲染视频」迁入序列面板并删除旧「动画」页签——序列编辑器完全替代动画模块(渲染视频:分辨率/帧率/码率/格式可设+浮动进度条)。【V7.1.1 交互品质版】属性面板实时同步:脚本/动画序列/数据绑定/API 驱动物体属性时,右侧属性面板数值实时跟随刷新(150ms 节流,正在输入时不打扰)——脚本让物体每帧旋转时旋转角实时可见。面板收起对齐修复:贯通到底后再收起左/右面板,底部流程栏自动回满宽对齐软件边缘。MCP 状态圆点:仅显式配置 MCP 网关(URL 加 ?mcp= 参数)时显示,平时不再出现。序列编辑器交互大升级(126 项测试):①所有按钮/序列行/轨道行/关键帧 hover 高亮+选中态,序列列表、轨道树、时间线三栏分界处均有拖拽热区可随意调宽;②播放控制补全:播放/暂停/停止/跳头跳尾/倒放/循环(不循环·循环·往返)/速率;③关键帧选择系统:单选、Ctrl 加选、时间线空白处拖动框选(跨属性行)、选中后整体左右拖移(吸附网格)、Delete 删除、右键菜单删除所选、Esc 取消;④属性树三级折叠默认收起(变换→位移/旋转/缩放→X/Y/Z 逐级展开,展开状态记忆);⑤外部动画轨道:携带骨骼动画的导入模型加入序列后,变换组上方出现「🎬 动画」轨道,可下拉加载模型自带的多个动画剪辑(可多选),以动画片段块形式编排(拖动改起始时间),序列播放时驱动 AnimationMixer(Fox 骨骼动画全链路验证通过)。播放器课件加载修复:加载自定义课件工程后旧默认场景彻底卸载(几何/材质 dispose 防泄漏)、相机自动取景新模型、欢迎卡自动关闭、内置示例课件幂等切换(反复切换无残留,E2E 18 项验证)。剖切面体系加固:全矩阵 15 项复测通过(材质插槽五色/盒剖切旋转跟随/导入模型自动重建/极值位置/关闭零残留/半透明断面排序/帧率 61fps)。
v7.0(2026-08-20)数字孪生编辑器大版本:新增左侧「📜 脚本」页签(组件式脚本引擎:onInit/onUpdate/onEvent/onDestroy 生命周期 + 7 个开箱模板:每帧绕 Y 转 5°/正弦浮动/呼吸灯/跟随构件/点击变色/告警闪烁/缩放脉冲);新增左侧「📡 数据」页签(数据绑定引擎:piadmin/HTTP/WebSocket/MQTT/模拟器 5 类数据源实时驱动场景元素属性 + 阈值告警规则 + 驱动归属面板);「资源」面板新增 📐 STEP 工业模型导入(工业软件曲面模型自动三角化→转 GLB→自动入资源库,精度/单位/合并/构件上限可调,双击置入场景,亦提供「置入场景」直达按钮);时间轴新增 🎥 渲染输出视频(分辨率/帧率/码率/格式可设,渲染进度条实时显示,完成后自动保存到浏览器下载文件夹);视口工具栏新增 💡 辅助物体显隐开关(灯光/相机一键隐藏,大纲灯光/相机行有独立眼睛图标);场景环境新增曝光调节滑杆(大气天空自动曝光补偿防过曝,修复切回纯色白云残留);API 2.0 能力注册表(57 项能力对 UI 编辑器/手写前端/大模型 MCP 三方开放);步骤卡片拖拽自动滚动;修复播放器课件加载流程(去掉确认弹窗一步到位)、新建绑定表单闪退、STP 直接进场景改为入库等缺陷
v6.7(2026-08-18)语音时长驱动步进:演示模式每步停留时间按提示文字长度+语音播报时长动态计算(语音开≈4.2字/秒+缓冲,语音关按阅读170ms/字),音频没播完不再抢跑下一步(播放器同步)。工具选择条回归:培训/考核模式底部显示工具选择条,学员须先选对工具再操作构件,选错培训拦截提示/考核计工具错误(考核条新增🔧计数)。播放器精简:移除右上角文档按钮。手册对齐:删除软件未开放的粒子/GIS 章节,全篇重编号
v6.6(2026-08-18)🎬 步骤制作器(P0):拖出即成步(轴向智能吸附/Alt面法线/Shift自由)、附加并行、链式均分间距;步骤卡片拖拽排序/单步回放/参数复制;爆炸图=步骤终态投影(数据同源);dirVec 自定义方向全链路(编辑器→course.json→播放器)。剖切纯线框化(填充面闪烁根除;线框可点选,W移动/E旋转/R缩放);爆炸标签改用标注系统(专业式引导线+绑定跟随+收拢自动清除);爆炸设置与步骤制作器联动:有步骤时爆炸方式锁定为步骤投影(UI 提示)、间距系数作用于投影、规整排列按步骤顺序 BOM 排开、爆炸标签样式/采样/抗锯齿与场景面板同步、清空步骤自动恢复手动模式。v6.6 补丁2:标签连线端点没入标签板(视觉必连,修"初始断开");步骤面板新增↺重置/🗑清空;拆卸/装配流程完全独立(装配序列自动生成=倒序+反向,各自完成态/起点状态互不影响,随工程保存);演示引导气泡移至右侧不遮挡模型;标签样式面板加连线样式/颜色/粗细;大纲新增👁全显/🚫全隐+多选批量眼睛;爆炸标签手动调整记忆(拖动后记录位置+相机视角,重新爆炸自动恢复,可一键清除)
v6.5(2026-08-17)🏷 标签系统(吸附标注):单击构件单独建标签、Shift+单击多模型共用一个标签、点空白建自由标签;标签带引导线(直线/S型曲线,颜色/粗细/样式可调)且跟随构件;属性面板绑定模型列表(增/删/清空/换绑/解绑);标签可打组/批量多选统一改参/拖动移动/创建与移动均可撤销;删除构件级联删连线。大纲对象分组:标签/灯光/相机各有父级组(可折叠/选中/重命名),视口选中自动展开所在组并聚焦,双击任意元素=F聚焦。爆炸图标签抗锯齿+采样精度参数;爆炸多余引导线修复;打组保存重开模型丢失修复;移除独立文字标注(并入标签)。v6.5 补丁:爆炸图标签去除引导线;考核模式补齐考试条 HUD(用时/错误/提示/进度);修复演示模式退出后在途动画滞后补刀导致的步骤残留(四模式完全隔离);手册全篇重编号并补粒子/GIS(预留)章。v6.5 补丁2:爆炸图智能重排(主轴杆状件识别+链式零重叠+外壳轮辐侧拉+标签三层交错恒定清晰);剖切工具场景手柄化(W移动/E旋转/R缩放,斜剖+非均匀盒),盒面闪烁根治;v6.5 补丁3:材质库新增线框类10种;平面剖切闪烁根治(PlaneHelper内部mesh关深度);统计数字改静态统计不再跳动;爆炸标签绑定构件跟随移动;演示模式每步必出引导气泡(无文本自动生成)
v6.4(2026-08-14)播放器材质继承:编辑器赋的材质(颜色/金属度/粗糙度/发光/贴图)随课件包/工程包带入播放器,不再恢复默认;播放器直开 .vtpack 工程包(双击即可,不用拆 json+glb);爆炸图组层级过滤(空物体组不出标签不炸开);大纲多选整组拖拽相机目标/父对象绑定(环绕动画只K位置、相机跟随运动构件);时间轴拖入修复提示气泡加显示时长/关闭按钮/语音播报修复;雾效控制(拉远变黑根治)
v6.3(2026-08-12)Excel 拆装列表驱动:大纲面板「📤 导出列表」一键导出部件清单(名称/ID/层级路径/拆卸顺序/工具/材质/提示,已配置步骤自动回填);步骤面板「📥 导入拆装列表」支持 xlsx/csv,按 ID→名称→模糊三级匹配自动生成拆卸步骤并按顺序排列,材质列自动匹配预设赋予;大批量构件零手动点选
v6.2(2026-08-12)模式系统彻底重建:编辑/演示/培训/考核/预览五模式完全隔离——exitCurrentMode 统一卸载(清定时器/高亮/提示/勾选/面板),演示自动播放不丢步,考核计时器不泄漏;演示/培训/考核底部显示步骤流程图;预览模式独立(只加 preview 类不改 mode);标签文字 4 倍清晰度
v6.1(2026-08-12)右栏页签按 PRD 工作流重排(属性→步骤→批次→引导→相机→界面→工具→考核);新增「批次」独立页签(勾选构件统一配置方向/距离/时长/工具/提示,一键批量生成);演示模式自动播放修复;水轮机组容器(大纲可折叠)
v6.0(2026-08-11)拆装流程系统重建:步骤运行器(演示自动播放/培训分步引导/考核自由判定);⇄ 拆卸/装配流程一键切换(装配自动逆序);考核评分引擎(顺序错误/求助/超时扣分+成绩弹窗);材质三栏面板(分类导航+材质球+通道编辑器);灯光系统根治(删除/清空/复制/大纲多选/F聚焦);视频投影改为投影机式全局投射
v5.1(2026-08-11)蓝图板块删除;资源/材质/模型库整体迁移到底部页签;FBX 贴图丢失根治(自动映射 ../textures 引用+救援补选);glTF 文件夹实测全通;框选包围盒;工具栏精简(删网格/锁定/轴心/半透明按钮,爆炸移右缘);模型库删基础物体;教程视频重录(码垛机器人+自然配音)
v5.0(2026-08-11)预览模式隐藏全部辅助线/代理(灯光/相机/路线);导入缺贴图智能提示;相机轨道可选中且 FOV/对焦/光圈/曝光全属性可打关键帧(删帧后可续打);主相机近/远裁剪可调(默认远裁剪 2000,拉远不再变黑);IK 与特效模块移除;关键帧属性下拉分组美化;相机视频融合/视频孪生:本地视频/视频流 URL(m3u8/mp4/webm,rtsp 经网关转 HLS)投影到三维场景,支持鱼眼/广角去畸变(k1/k2)、画面自定义裁剪、边缘虚化、透明度、亮度、色温;大纲固定第一默认显示;模型库/材质/资源移至底部栏与动画/蓝图并列
v4.5(2026-08-11)FBX 多材质数组导入修复(真实 medieval 书模型实测);glTF 缺 bin/贴图时给出明确引导提示(多选导入/拖整个文件夹进视口);视口支持直接拖入模型文件夹;F 键还原为聚焦(行走/漫游走漫游下拉,不再冲突);GIS 模块移除;闪烁三轮治理(统一渲染路径+相机运动门控+N8AO 时序累积静止收敛);路线顶点可点选手柄拖拽编辑+曲线/折线一键切换;蓝图连线改为纯拖拽(去掉双击)
v4.1关键帧动画制作;GIS 默认高程;资源文件夹;第一/第三人称;组选择/解散;大纲拖拽父子;属性 XYZ 拖动;体积云+指数雾;集成导出 iframe

24. ⌨ 快捷键速查表

快捷键功能
W / E / R变换手柄:移动 / 旋转 / 缩放
Q切换 世界 / 局部坐标系
F聚焦选中对象(构件/标签/灯光/相机均可,大纲双击任意元素等同)
Ctrl+Z撤销(含创建/移动标签)
Ctrl+Y重做
Ctrl+G选中对象打组(构件/标签/灯光均可)
Ctrl+A全选构件
Ctrl+C / Ctrl+V复制 / 粘贴构件副本
Ctrl+F聚焦大纲搜索框
Shift+点击大纲范围多选 / 标签模式多模型共用标签
Esc取消多选 / 退出标签模式 / 取消换绑·加绑 / 退出步骤制作模式
空格序列编辑器:播放 / 暂停
Ctrl+滚轮序列编辑器:时间线缩放(以指针为锚)
Delete删除选中构件 / 灯光 / 标签

25. ❓ 常见问题 FAQ

Q1:模型导入后整体发白(过曝)或发黑(太暗)怎么调?

按顺序排查:① 调「全局曝光」(发黑就调高、发白就调低);② 检查主平行光强度是否过大(发白)或缺失(发黑);③ 确认「环境反射」已启用——金属材质没有环境反射会整体发黑;④ 个别构件发黑多是法线贴图问题,尝试替换该构件的法线贴图或用预设材质覆盖。

Q2:导入的模型带动画,但不播放?

① 确认模型已置入场景,并在底栏「🎬 序列」编辑器中把构件从大纲拖入序列,在「🎬 动画」轨道行点「+加载动画」勾选剪辑(仅导入不会自动播放);② 检查动画片段块的起始时间是否在序列时长内;③ 确认当前没有处于"考核模式"预览(考核模式下动画暂停);④ 重新导入模型验证动画本身在导出时是否勾选包含。

Q3:构件的轴心位置不对,手柄飘在很远的地方怎么办?

选中构件,在右侧「属性」面板的「轴心点」下拉选择目标位置(包围盒中心/底面中心等 11 种)后点「设置轴心」(见 7.4 节),多数情况选「包围盒中心」即可解决;嵌套组内或父级带旋转/缩放的物体也能精确设置(v7.4 矩阵补偿)。根治办法是请建模团队在导出前归置轴心(见第 3 章规范)。

Q4:重新打开工程后,之前替换的贴图不显示了?

这是预期行为:外部贴图仅在当前会话生效,工程文件不打包外部图片。重新指定一次贴图文件即可恢复。建议重要贴图命名规范、集中存放,开工时批量重新指定。

Q5:考核的判错逻辑是怎样的?

每个考核点要求学员在限定步数内点选正确构件:点对得分;点错扣分或按"允许多次尝试"的设置继续作答,超过尝试次数判错并显示提示语。全部考核点完成后汇总总分。若出现"明明点对却判错",请检查考核点绑定的构件是否被重新导入的模型替换(重新导入需重新绑定考核点)。

Q6:模型很大、操作卡顿,性能上有什么建议?

① 先观察几秒——自适应画质 Governor 会自动降档(v7.5 起还会降分辨率自救),通常无需干预;② 手动切「🌌 场景」页签画质档位为「流畅」(注意:手动选画质会关闭自动 Governor);③ 整机建议 ≤ 100 万三角面,超出请建模团队做减面/LOD;④ 阴影质量降到「中」;⑤ 灯光总数 ≤ 4 盏;⑥ 定期清空历史记录释放内存;⑦ 大屏培训电脑请用独立显卡 + Chrome/Edge 最新版本。

Q7:重新导入模型后,之前做的步骤会丢吗?

步骤通过构件名称关联。若新模型的层级与命名完全一致,步骤可自动匹配保留;命名或层级变化会导致对应步骤失效(列表中标红提示),需删除失效步骤后重新生成。因此模型定稿前不建议大量编排步骤。

Q8:播放器里能中途跳转到某一步吗?

可以。播放器侧边的步骤目录支持点击跳转;跳转时模型状态会按流程图快进到对应节点。若该课件开启了考核模式,则考核点步骤不允许跳过,必须作答后才能继续。

— 手册结束 · DPE 数字样机编辑器 Web3D版 V7.9.66 —